CloudFormationでスタックを更新する際にCloudFormation/AWSCloudFormation is not authorized to perform:~~~というエラーが発生した。原因と対処法を記載します。
エラーメッセージ全文:
User: arn:aws:sts::123456789012:assumed-role/CodeStarWorker-outwatchhttp-CloudFormation/AWSCloudFormation is not authorized to perform: lambda:AddPermission on resource: arn:aws:lambda:ap-northeast-1:123456789012:function:OutWatchHttp because no identity-based policy allows the lambda:AddPermission action (Service: AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException; Request ID: 7f6901c8-bb94-4dfc-8f25-f0bf9d5aabb1; Proxy: null)
原因:スタックを更新するロールの権限が足りていない
エラーメッセージそのままですが、CloudFormationで使用しているロールに権限が足りていません。上記のエラーだとCodeStarWorker-outwatchhttp-CloudFormation/AWSCloudFormation というロールにlambda:AddPermission を行う権限が足りていないということです。
対処法:ロールに権限を追加する
今回であればエラーメッセージにある通り、CodeStarWorker-outwatchhttp-CloudFormation/AWSCloudFormationにlambda:AddPermission の権限を追加します。IAMロールにアタッチされているポリシーに以下のような権限を追加します。
{
"Effect": "Allow",
"Action": [
"lambda:AddPermission"
],
"Resource": "*"
}
また、AWSの最小権限のベストプラクティスからは外れるかもしれませんが、CloudFormationで権限系のエラーを発生させたくない場合はAWSCloudFormationロールにAdministratorAccessを割り当てるのもありかとは思います。
PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!
SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ
システムエンジニア
AWSを中心としたクラウド案件に携わっています。
IoTシステムのバックエンド開発、Datadogを用いた監視開発など経験があります。
IT資格マニアでいろいろ取得しています。
AWS認定:SAP, DOP, SAA, DVA, SOA, CLF
Azure認定:AZ-104, AZ-300
ITIL Foundation
Oracle Master Bronze (DBA)
Oracle Master Silver (SQL)
Oracle Java Silver SE
■略歴
理系の大学院を卒業
IT企業に就職
AWSのシステム導入のプロジェクトを担当