对 CloudFormation 上的嵌套堆栈使用 CAPABILITY_AUTO_EXPAND
Use CAPABILITY_AUTO_EXPAND for nested stacks on CloudFormation
我正在尝试使用嵌套堆栈,当我的 ChangeSet 被执行时,我收到了这个错误:
Requires capabilities : [CAPABILITY_AUTO_EXPAND]
我用 cloudformation 创建了一个管道。
这可用于创建管道:
Configuration:
ActionMode: CHANGE_SET_REPLACE
ChangeSetName: changeset
RoleArn: ??
Capabilities: CAPABILITY_IAM
StackName: appsync-graphql
TemplatePath: BuildArtifact::output.yaml
这不能:
Configuration:
ActionMode: CHANGE_SET_REPLACE
ChangeSetName: changeset
RoleArn: ??
Capabilities:
- CAPABILITY_IAM
- CAPABILITY_AUTO_EXPAND
StackName: appsync-graphql
TemplatePath: BuildArtifact::output.yaml
错误是:“属性 配置的值必须是具有字符串(或简单类型)属性的对象”
这是我找到的最接近的文档:https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html
它说:Type: Array of strings
for capabilites,aws cli docs 说的类似,但没有给出示例。
所以我 运行 不知道还有什么可以尝试拥有 CAPABILITY_AUTO_EXPAND 能力。
我从 Keeton Hodgson 那里得到了答案,这个 cli 命令有效:
sam deploy --template-file output.yaml --stack-name <AppName> --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND
注意没有逗号。
我仍然不知道如何更改管道模板以使其正常工作。
我尝试了另一种变体,它成功了!
Configuration:
..
Capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND
...
像这样把能力属性放在最后
aws cloud formation deploy COMMAND --capabilities CAPABILITY_NAMED_IAM
更改顺序
Configuration:
ActionMode: CHANGE_SET_REPLACE
ChangeSetName: changeset
RoleArn: ??
StackName: appsync-graphql
TemplatePath: BuildArtifact::output.yaml
Capabilities:
- CAPABILITY_IAM
- CAPABILITY_AUTO_EXPAND
我尝试了上述解决方案,今天(2020 年 6 月)使用更高级别 sam
对我有用的是在列出的功能之间添加 space。在这个文本文件解释中没有弹性,这完全是精神错乱。 SAM 的 cli 是开源的,所以我想我可以把我的代码放在嘴边并提交 PR。反正。
samconfig.toml
:
...
capabilities = "CAPABILITY_IAM CAPABILITY_AUTO_EXPAND"
...
然后:
sam deploy
输出:
...
Capabilities : ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
...
经过一些研究发现您实际上可以在控制台中添加这些功能。
参考Capabilities - optional section in the cfn deploy phase definition in console
我正在尝试使用嵌套堆栈,当我的 ChangeSet 被执行时,我收到了这个错误:
Requires capabilities : [CAPABILITY_AUTO_EXPAND]
我用 cloudformation 创建了一个管道。
这可用于创建管道:
Configuration:
ActionMode: CHANGE_SET_REPLACE
ChangeSetName: changeset
RoleArn: ??
Capabilities: CAPABILITY_IAM
StackName: appsync-graphql
TemplatePath: BuildArtifact::output.yaml
这不能:
Configuration:
ActionMode: CHANGE_SET_REPLACE
ChangeSetName: changeset
RoleArn: ??
Capabilities:
- CAPABILITY_IAM
- CAPABILITY_AUTO_EXPAND
StackName: appsync-graphql
TemplatePath: BuildArtifact::output.yaml
错误是:“属性 配置的值必须是具有字符串(或简单类型)属性的对象”
这是我找到的最接近的文档:https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html
它说:Type: Array of strings
for capabilites,aws cli docs 说的类似,但没有给出示例。
所以我 运行 不知道还有什么可以尝试拥有 CAPABILITY_AUTO_EXPAND 能力。
我从 Keeton Hodgson 那里得到了答案,这个 cli 命令有效:
sam deploy --template-file output.yaml --stack-name <AppName> --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND
注意没有逗号。
我仍然不知道如何更改管道模板以使其正常工作。
我尝试了另一种变体,它成功了!
Configuration:
..
Capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND
...
像这样把能力属性放在最后
aws cloud formation deploy COMMAND --capabilities CAPABILITY_NAMED_IAM
更改顺序
Configuration:
ActionMode: CHANGE_SET_REPLACE
ChangeSetName: changeset
RoleArn: ??
StackName: appsync-graphql
TemplatePath: BuildArtifact::output.yaml
Capabilities:
- CAPABILITY_IAM
- CAPABILITY_AUTO_EXPAND
我尝试了上述解决方案,今天(2020 年 6 月)使用更高级别 sam
对我有用的是在列出的功能之间添加 space。在这个文本文件解释中没有弹性,这完全是精神错乱。 SAM 的 cli 是开源的,所以我想我可以把我的代码放在嘴边并提交 PR。反正。
samconfig.toml
:
...
capabilities = "CAPABILITY_IAM CAPABILITY_AUTO_EXPAND"
...
然后:
sam deploy
输出:
...
Capabilities : ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
...
经过一些研究发现您实际上可以在控制台中添加这些功能。
参考Capabilities - optional section in the cfn deploy phase definition in console