13
8

More than 5 years have passed since last update.

【AWS】IAM ロールのパスをルート(/)以外にする

Last updated at Posted at 2018-12-08

はじめに

こちらのサイト を参考に Sagemaker を触ってみようとしたところ、
トレーニング部分で sagemaker unable to assume role という
エラーが発生しました。

結論としては下の図のようにSagemakerにアタッチするロールのパスを
/service-role/ に必要があったのですが、その設定がコンソール上から
出来ず、aws cli で行う必要がありました。

同じようなことがあったときに迷わないようにメモしておきます。

キャプチャ.PNG

設定方法

今回作るのはSagemakerのサービスロールなので、こういうファイルを作成します。

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

以下のコマンドを実行すれば、パスが /service-role/ のロールが出来ます。

$ aws iam create-role --role-name [ロール名] --path /service-role/ --assume-role-policy-document file://sage.json
{
    "Role": {
        "Path": "/service-role/",
        "RoleName": "[ロール名]",
        "RoleId": "XXXXXXXXXXXX",
        "Arn": "arn:aws:iam::XXXXXXXX:role/service-role/[ロール名]",
        "CreateDate": "2018-12-08T19:20:28Z",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": {
                "Effect": "Allow",
                "Principal": {
                    "Service": "sagemaker.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        }
    }
}

後は AmazonSageMakerFullAccess など必要なポリシーをアタッチすればOK。

注意

json ファイルの指定には、file://sage.json のようにする必要があります。
file:// 無しだとエラーが返されました。

$ aws iam create-role --role-name TestRole --path /service-role/ --assume-role-policy-document sage.json

An error occurred (MalformedPolicyDocument) when calling the CreateRole operation: This policy contains invalid Json
13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8