2016-12-20 50 views

回答

14

原來你需要勾選堆棧創建的最後一個屏幕上的一個方框|更新:

enter image description here

在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模板,因爲它不是實際創建資源。

+0

這是一個正確的答案,謝謝。 –

2

如果您使用的是AWS CLI,則可以向aws cloudformation create-stack命令中添加一個額外參數,以明確聲明您希望提供這些功能。

(這裏的CLI相當於勾選了其他答案中的複選框)。

的參數是--capabilities CAPABILITY_IAM,所以你的命令如下所示:

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

希望幫助

+0

感謝cli param的提醒。在上面添加了完整的代碼示例。 –

+1

我錯了嗎,或者不能用'validate-template'?我的完整命令:'aws cloudformation validate-template --template-body file://sqs-template.yml --capabilities CAPABILITY_IAM' –

+0

我來這裏想知道同樣的事情。如果您看到「錯誤」「CapabilitiesReason」:「以下資源需要功能:[AWS :: IAM :: Role]」'那麼這意味着您的模板是有效的,您必須指定返回創建堆棧時的能力。 [來源](http://docs.aws.amazon.com/cli/latest/reference/cloudformation/validate-template.html) –