AWS CloudFormation Stack update error: Requires capabilities : [CAPABILITY_IAM]

AWS CloudFormation Stack update error: Requires capabilities : [CAPABILITY_IAM]

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

Stack update error: Requires capabilities : [CAPABILITY_IAM]

我找不到用于将 CAPABILITIES_IAM 添加到 CloudFormation 配置的模板。

解决 CAPABILITIES_IAM 错误的选项是什么?

原来您需要在堆栈创建的最后一个屏幕上选中一个框。如果您使用的是控制台,在 'create stack' 按钮上方会有一个框,要求您确认是否允许 Cloudformation 修改 IAM 内容。当然,您可以在没有确认的情况下创建堆栈,这将导致堆栈失败并出现 CAPABILITY_IAM 错误(或其他错误,如果需要不同的功能)。

在 CodePipeline CloudFormation 中,您可以像这样添加它以允许在部署操作中执行创建的 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

在 aws cli 追加中

--capabilities CAPABILITY_IAM

--capabilities CAPABILITY_NAMED_IAM

你的命令是这样的:

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

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

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

(这是 CLI 等同于在此处勾选其他答案中的复选框)。

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

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

希望对您有所帮助

在创建堆栈按钮上方,打开控制台中的确认。