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