botchy hack note

TypeScript、Ruby、Golang とか Macとかの備忘録です.間違いがあるとご指摘くださると嬉しいです.

AWS IAM のポリシーをアカウントにアタッチする

f:id:bokken31:20170510000033p:plain

こんにちは、TypeScript と VS CodeAWS が好きな bokken (@bokken_) です。

AWS CLI を使っているときに、下記のように AccessDenied エラーが出る事があります。

$ aws iam create-policy --policy-name test1 --policy-document file://policy.json

An error occurred (AccessDenied) when calling the CreatePolicy operation: User: arn:aws:iam::000000000000:user/bokken is not authorized to perform: iam:CreatePolicy on resource: policy test1

このエラーは自分のアカウントに権限が無いから起こっています。

AWS は権限周りの設定がやや手間になっているので、以降ではどうやって自分のアカウントに権限を付加するのかを紹介していきます。

目次

全体の流れ

  1. ポリシーの作成
  2. アカウントへのポリシーのアタッチ

ポリシーの作成

AWS コンソールにログインして IAM にアクセスします。

そして、下図のポリシーをクリックします。

f:id:bokken31:20170509235757p:plain

それからポリシーの作成をクリックします。

f:id:bokken31:20170509235816p:plain

独自のポリシーの作成をクリックします。

f:id:bokken31:20170509235825p:plain

すると、ポリシードキュメントという権限についての定義を入力する画面が出てきます。

f:id:bokken31:20170509235833p:plain

今回は CloudFormation 関係のすべての権限を付加することを考えます。

CloudFormation を扱えるようにするためには、ポリシー名を設定し(今回はCloudFormationAllとします)、下記のJSON形式のポリシードキュメントを設定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:*"
            ],
            "Resource": "*"
        }
    ]
}

このとき、Actioncloudformation:*:* より前の部分を自分が扱いたいサービスにすれば、対象のサービスの権限を付与することができます。

各サービスごとにどういった権限があるかはこちらAWS のドキュメントから確認できます。

各サービスごとにサービスの名称そのままではないケースがあるので、注意してください。(CloudWatch Logsは cloudwatch ではなく logs である、など)

ポリシーの定義ができれば、あとは下図のようにポリシーの作成をクリックすればOKです。

f:id:bokken31:20170509235846p:plain

ポリシーのアタッチ

ポリシーを作成した後で今度はユーザーにその権限を付与する必要があります。

ポリシーの作成を終えたあとの画面は下図のようになっているので、ユーザーをクリックします。

f:id:bokken31:20170509235854p:plain

対象のユーザー名をクリックします。

f:id:bokken31:20170509235902p:plain

そこでアクセス権限の追加をクリックします。

f:id:bokken31:20170509235911p:plain

それから既存のポリシーを直接アタッチをクリックします。

f:id:bokken31:20170509235920p:plain

そこで検索バーに CloudFormationAll を入力して CloudFormationAll にチェックを入れます。

f:id:bokken31:20170509235929p:plain

そして管理ポリシーが間違っていなければアクセス権限の追加をクリックします。

f:id:bokken31:20170509235938p:plain

すると下図のようにアタッチされたポリシーの一覧に CloudFormationAll が追加されているはずです。

f:id:bokken31:20170509235944p:plain

以上の手順で、AWS CLI から CloudFormation を扱えるようになりました。

まとめ

今回は、CLoudFormation を扱うための IAM を定義しユーザーにアタッチする方法を紹介しました。

この方法で様々な権限を付与できるので必要な権限を設定して適宜アタッチしてください。

良かったら TypeScript 関連や AWS 関連のつぶやきをしているので @bokken_ をフォローしてみてください。

それではより良い AWS ライフを!