起動テンプレートを利用する ASG に CodeDeploy の Blue/Green デプロイを設定したら権限周りではまった

起動テンプレートを利用した ASG で CodeDeploy を使ってデプロイを実現したくて
– Blue/Green デプロイ
– Auto Scaling グループの自動コピー
という内容で設定した。

デプロイグループのサービスロールには AWS 管理ポリシーの「AWSCodeDeployRole」をアタッチしたロールを指定していたのに、いざ走らせると

The IAM role arn:aws:iam::xxxxxxxxxxxx:role/HogeRole does not give you permission to perform operations in the following AWS service: AmazonAutoScaling. Contact your AWS administrator if you need help. If you are an AWS administrator, you can grant permissions to your users or groups by creating IAM policies. (Error code: IAM_ROLE_PERMISSIONS)

という権限周りのエラーで速攻失敗する。

ロールを含め同じ設定・権限で、起動設定を利用する ASG へのデプロイは正常に動く。

調査開始

CloudTrail でイベント情報を確認してみると、
 ec2 の RunInstances で Client.UnauthorizedOperation
 autoscaling の CreateAutoScalingGroup で AccessDeniedException
のエラーがそれぞれ出てる。

AWSCodeDeployRole には CreateAutoScalingGroup が含まれていたものの、
RunInstances は含まれていなかったので、まずはそれをインラインポリシーで追加してみる。
→ 状況変わらず

エラーメッセージに AutoScaling の権限が無いと言われているので、
AutoScalingGroup のフルアクセス権をロールに付与してみる。
→ これも状況変わらず。

CloudTrail で確認したエラー「Client.UnauthorizedOperation」を見て、
Unauthorize とか言われているからとりあえず IAM のフルアクセス権を許可してみる。
やっとデプロイできた!

結局

ASG は起動テンプレートじゃなく起動設定を用いて設定するように変更。
余計な権限の付与や管理をしたくないのと、起動テンプレートじゃなきゃいけない要件もなかったので。