amazon-cloudformation - 将复杂对象作为参数传递给子堆栈
问题描述
我想将自定义资源的输出(对象数组)作为参数传递给子堆栈。我想作为参数传递给子堆栈的一个例子是:
[
{"Role":"Role1","IdentifierType":"Prefix","Identifiers":"Bucket1"}
{"Role":"Role2","IdentifierType":"Prefix","Identifiers":"Bucket2"}
]
如何将其传递给子堆栈?我尝试将子堆栈中的参数声明为 String,然后将其声明为 CommaDelimitedList。两次,堆栈都给出错误:“属性参数的值必须是具有字符串(或简单类型)属性的对象”
解决方案
据我所知,由于堆栈执行,没有办法传递复杂的对象。就像消息说的那样,输出需要是字符串或单一类型(在 cloudformation 的情况下为整数和布尔值)。
没有更多信息很难为您提供替代方案,但我们假设您的自定义资源基于 lambda。假设您可以控制自定义资源的代码。如果是这种情况,您可以:
- 将自定义资源的资源标识作为嵌套堆栈的参数发送;
- 在嵌套堆栈中,以 resourceId 作为参数再次调用 lambda 函数;
- 更改 lambda 代码以检查 resourceId 的新参数(在 ResourceParameters 内,而不是在 CloudFormation 发送的 Common Resource Id 内)。
- 如果参数不为空(或者不是在第一次调用时传递的定义值),则使用旧值响应(您必须有办法将这些值保存在某个地方或在运行时检查。);
- 在嵌套堆栈调用的情况下(使用 resourceId 参数),更改 lambda 代码以在更新/删除中不采取行动。
同样,如果没有有关您的具体问题的更多信息,很难考虑替代方案。但是将此响应用作思考的食物。
推荐阅读
- vba - 创建 vba 代码以连接到远程 SQL 服务器,执行更新 accdb 文件上的表的存储过程
- html - 我可以在谷歌图表中将 x 轴和 y 轴都设为字符串吗?
- python-3.x - scrapinghub上传和使用文件
- npm - @ngtools/webpack:检测到 Angular 编译器,但它是错误类的实例。
- go - 在其他包中使用 main.go 中声明的结构
- ios - 如何根据内容更改 UITableViewCell 大小
- virtual-machine - 虚拟 Windows 10 机器的 VMware Fusion for Mac 没有互联网
- javascript - 如何处理在 ReactJS 中映射为组件的一组数据的排序?
- performance - 淘汰赛嵌套 Foreach 绑定花费了太多时间
- java - DataFlow SDK 2.x:PubSubIO 授权错误