AWS CLIからRoleが作れない時のポリシー指定方法

前回の続きです。
実際にTemplateを作成したので、スタックを作成します。
ただ、ポリシーを設定していなかったのでその時の対処方法についてまとめます。 websandbag.hatenablog.com

この記事で得られる事

  • CloudFormationでロール作成(iam:CreateRole)を追加する時に必要なポリシーがわかる。

イントロダクション

今回作成したソースについて

https://github.com/websandbag/image_uploader

事象

v0.1で作成したポリシーでスタックを作成しようとすると、AWS CLIでCloudFormatioのスタックを作成したが、ロールバックしてしまう。

 02:07:40 UTC+0900   CREATE_FAILED   AWS::IAM::Role  ExecRole
    API: iam:CreateRole User: arn:aws:iam::<アカウントID>:user/<IAMのユーザー> is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::<アカウントID>:role/<ロール>

原因

リソースで「AWS::IAM::Role」を指定しているにも関わらず、AWS CLIを実行したユーザーに「CreateRole」の権限が付与されていない。

cloudformation.json

"Resources": {
    "ExecRole": {
        "Type": "AWS::IAM::Role"
    }
}

対応方法

AWS CLIを使うユーザーにRole関連の権限を付与する必要があります。 そのため、下記のポリシーをAWS CLIで設定しているIAMのユーザーに割り当てました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "OperationRole",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "*"
        }
    ]
}