我正在尝试使用嵌套堆栈,并且在执行我的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
表示功能,而aws cli文档也有类似的说法,但没有给出示例。
因此,我没有其他想法来尝试使用CAPABILITY_AUTO_EXPAND功能。
答案 0 :(得分:16)
我尝试了另一种变体,并且奏效了!
Configuration:
..
Capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND
...
答案 1 :(得分:5)
我从基顿·霍奇森(Keeton Hodgson)得到了答案,此cli命令有效:
sam deploy --template-file output.yaml --stack-name <AppName> --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND
请注意,没有逗号。
我仍然不知道如何更改管道模板以使其正常工作。
答案 2 :(得分:0)
像这样在最后放置功能属性
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
答案 3 :(得分:0)
我尝试了上述解决方案,而今天(2020年6月)使用更高级别的sam
对我有用的是在列出的功能之间增加了一个空格。完全疯狂的是,此文本文件解释中没有弹性。 SAM的cli是开放源代码,因此我想我可以将代码放在我的嘴边并提交PR。无论如何。
samconfig.toml
:
...
capabilities = "CAPABILITY_IAM CAPABILITY_AUTO_EXPAND"
...
然后:
sam deploy
输出:
...
Capabilities : ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
...