AWS CodeBuild から AWS CDK を呼び出し,いい感じで継続的に構成を更新し続けるパイプラインのようなものを作っておくと何かと便利です.
さてこの時,AWS CodeBuild を実行する IAM Role の権限がそのまま AWS CDK の実行に影響するので,その IAM には
- CloudFormation Stacks の操作に必要な権限
- CloudFormation が実際に影響を与える対象の操作 (つまり本当にやりたいこと) に必要な権限
という権限を与えておく必要がありますが,これに加えて
- CDK の中間生成物をアップロードする S3 Bucket:
arn:aws:s3:::cdktoolkit-stagingbucket-*
に対する権限s3:*Object
s3:ListBucket
も併せて与えないと ❌ YourStack failed: Forbidden: <snip>
などというエラーを吐いて死にます.
AWS CDK Forbidden
, arn:aws:s3:::cdktoolkit-stagingbucket-*
などで検索すると,公式ドキュメントを含めていろいろな情報がヒットするので既知の情報なのでしょう.しかしちょっとハマってしまったのでメモとして記すこととします.
なおタイトルにはこう書いてありますが,これは別に CodeBuild に限った話ではなく,任意の IAM Role で CDK を利用する時には共通して必要です.