AWS CloudFormationでインフラを構築するときに CAPABILITY_NAMED_IAM というエラーが出た
AWS CodePipeline + CloudFormation でインフラをソースコードで管理しようと思い、cfn-ci-cd-demo
というRepositoryをベースにいろいろ試してみました。
IAM Role を作るときに、
Requires capabilities : [CAPABILITY_NAMED_IAM]
というエラーが出ました。
エラーが出たときの手順
- src配下で、 IAM Role (RoleName指定有り)を作成するテンプレートを作成する
- git push してインフラ構築をする
- 1.で作成したテンプレートの構築時にエラーが出る
という流れで試していたので、1.の該当ファイルだけをCloudFormationのテンプレートに指定して動かしてみたところエラーも無く IAM Role の作成に成功しました。
cfn-ci-cd-demo
では、
- ソースコード取得
- テスト
- ビルド
- 認証許可
- デプロイ
の手順で、デプロイ時に失敗するのでココに原因があるものだと思い、追加したファイルをいろいろ変更して試してみたのですがCodePipelineからのデプロイは成功しませんでした。
解決方法
ビルド時の Capabilities: CAPABILITY_IAM
という設定が原因でした。
この部分です。
- Name: Build Actions: Configuration: Capabilities: CAPABILITY_IAM
IAM や IAM Role に名前を付けたい場合は CAPABILITY_NAMED_IAM
にしないといけないようです。
公式のドキュメントにも書いてあることでした。