Open3

IAMロールでサービスロール(パス:/service-role/)を作りたい

shuichishuichi

IAMロールの作成で、パス「/service-role/」を設定したものを作成したい。

例えば、AWS Lambda関数の作成時に自動で作成されるIAMロールには、このパスが設定されているので、揃えたい。

shuichishuichi
  • AWSコンソール(Webの画面)からでは、できない...?
  • AWS CLIのiam create-role--path /service-role/を指定してIAMロールを作成すればできる
    • 気楽な方法:雛形だけAWS CLIで作って、あとのIAMポリシーのアタッチなんかの追加調整は、AWSコンソール(Web)でする

AWS Lambda関数用の、ロール作成の例

  1. ロール名を決める

    今回は、AWS Lambda関数func-foo用のロールということで、ロール名はfunc-fooにします。

  2. パスのprefixを決める
    AWS Lambda関数用ということで、パスのprefix/service-role/lambda/にします。

    1のロール名と合わせて、パスは/service-role/lambda/func-fooとなります。

  3. 「信頼されたエンティティ」のポリシーは必須なので、これをjsonファイルとして作成する

    trust_lambda.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "lambda.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    

    AWS IAMコンソール「信頼されたエンティティ」

  4. AWS CLIでIAMロールを作成

    • --role-nameオプションで、func-fooを指定
    • --pathオプションで、/service-role/lambda/を指定
    • --assume-role-policy-documentオプションに、1で作成したJSONファイル「trust_lambda.json」を、file://を頭につけて指定
    aws iam create-role \
        --role-name func-foo \
        --path /service-role/lambda/ \
        --assume-role-policy-document file://trust_lambda.json
    
  5. AWS IAMコンソール(Web)にログインし、作ったIAMロールの設定から、残りのIAMポリシーの設定等を行う

参考

shuichishuichi

信頼ポリシーテンプレート

基本的に、Principal > Serviceのところが変わるだけ。

  • AWS Lambda

    trust_lambda.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "lambda.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  • CodeBuild

    trust_codebuild.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "codebuild.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }