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

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


はじめに

こちらのサイト を参考に 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 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)