AWS Stack更新错误:需要功能:[CAPABILITY_IAM]

Eri*_*ord 38 amazon-web-services aws-cloudformation

使用CloudFormation创建堆栈时,出现此错误:

Stack update error: Requires capabilities : [CAPABILITY_IAM]
Run Code Online (Sandbox Code Playgroud)

我找不到添加CAPABILITIES_IAM到CloudFormation配置的模板.

解决CAPABILITIES_IAM错误的选项有哪些?

Eri*_*ord 69

事实证明,您需要在堆栈创建的最后一个屏幕上选中一个框.

在CodePipeline CloudFormation中,您可以像这样添加它以允许在deploy操作中执行创建的change_set:

Configuration:
        StackName: !Ref GitHubRepository
        ActionMode: CHANGE_SET_REPLACE
        Capabilities: CAPABILITY_NAMED_IAM
        RoleArn: arn:aws:iam::818272543125:role/events-list-codepiplinerole
        ChangeSetName: !Join ["",[!Ref GitHubRepository, "-changeset"]]
        TemplatePath: MyAppBuild::sam_post.yaml
Run Code Online (Sandbox Code Playgroud)

在aws cli追加

--capabilities CAPABILITY_IAM
Run Code Online (Sandbox Code Playgroud)

要么

--capabilities CAPABILITY_NAMED_IAM
Run Code Online (Sandbox Code Playgroud)

对你的命令是这样的:

aws cloudformation create-stack --stack-name message-store --template-body file://bucket_with_keys.yaml --parameters file://cfg_bucket_with_keys.json --capabilities CAPABILITY_NAMED_IAM
Run Code Online (Sandbox Code Playgroud)

这不适用于cloudformation --validate-template,因为它实际上并不创建资源.


gsa*_*lis 9

如果您使用的是AWS CLI,则可以向aws cloudformation create-stack命令添加一个额外参数,该命令明确指出您希望提供这些功能.

(这是CLI相当于勾选其他答案中的复选框).

参数是--capabilities CAPABILITY_IAM,所以你的命令看起来像:

aws cloudformation create-stack --stack-name $STACK_NAME --capabilities CAPABILITY_IAM

希望有所帮助

  • 我来到这里想知道同样的事情。如果您看到“错误”`“CapabilitiesReason”:“以下资源需要功能:[AWS::IAM::Role]”`,则仅表示您的模板有效,您必须指定返回创建堆栈时的功能。[来源](http://docs.aws.amazon.com/cli/latest/reference/cloudformation/validate-template.html) (2认同)
  • 还有一个github问题也在讨论这个问题:https://github.com/awslabs/serverless-application-model/issues/51 (2认同)

Aas*_*ali 5

在创建堆栈按钮上方,在控制台中打开确认。 在此处输入图片说明