0

ローカル ラップトップでhttps://github.com/aws-samples/aws-deepracer-workshops/blob/master/log-analysis/DeepRacer%20Log%20Analysis.ipynbから Deepracer ログ分析ツールを実行しようとしています。ただし、ステップ [5]「IAM ロールの作成」を実行しようとすると、以下のエラーが発生します。

try:
    sagemaker_role = sagemaker.get_execution_role()
except:
    sagemaker_role = get_execution_role('sagemaker')

print("Using Sagemaker IAM role arn: \n{}".format(sagemaker_role))

Couldn't call 'get_role' to get Role ARN from role name arn:aws:iam::26********:root to get Role path.
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-3bea8175b8c7> in <module>
      1 try:
----> 2     sagemaker_role = sagemaker.get_execution_role()
      3 except:

/opt/conda/lib/python3.7/site-packages/sagemaker/session.py in get_execution_role(sagemaker_session)
   3302     )
-> 3303     raise ValueError(message.format(arn))
   3304 

ValueError: The current AWS identity is not a role: arn:aws:iam::26********:root, therefore it cannot be used as a SageMaker execution role

During handling of the above exception, another exception occurred:

NameError                                 Traceback (most recent call last)
<ipython-input-5-3bea8175b8c7> in <module>
      2     sagemaker_role = sagemaker.get_execution_role()
      3 except:
----> 4     sagemaker_role = get_execution_role('sagemaker')
      5 
      6 print("Using Sagemaker IAM role arn: \n{}".format(sagemaker_role))

NameError: name 'get_execution_role' is not defined

上記のコードをエラーなしで実行するために何をする必要があるか知っている人はいますか?

4

1 に答える 1

1

以下のソリューションを推奨する AWS サポート:

これは、次の Github の問題 [3] で言及されているように、コードをローカルで実行する場合の既知の問題のようです。この問題を修正するための回避策もその問題 [3] で定義されており、次のリンクを使用して参照できます: aws/sagemaker-python-sdk#300 (コメント)

上記のリンクに記載されている回避策の手順は次のとおりです。

  1. AWS コンソールにログイン -> IAM -> ロール -> ロールの作成

  2. IAM ロールを作成し、「SageMaker」サービスを選択します

  3. ロールに「AmazonSageMakerFullAccess」権限を付与します

  4. ロールを確認して作成する

  5. 次に、「AWSRoboMakerFullAccess」アクセス許可ポリシーも、上記で作成したロールにアタッチします (Github ノートブックで必要な [1])。

  6. その後、元のコードを変更して、コードがローカル マシンで実行されるときに IAM ロールを直接フェッチする必要があります。使用するコード スニペットを以下に示します。

try:
   sagemaker_role = sagemaker.get_execution_role()
 except ValueError:
   iam = boto3.client('iam')
   sagemaker_role = iam.get_role(RoleName='<sagemaker-IAM-role-name>')['Role']['Arn']

上記のスニペットで、「」テキストをステップ 4 で作成した IAM ロール名に置き換えます。

参考文献:

[1] https://github.com/aws-samples/aws-deepracer-workshops/blob/master/log-analysis/DeepRacer%20Log%20Analysis.ipynb

[2] https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-ex-role.html

[3] aws/sagemaker-python-sdk#300

于 2020-04-01T17:00:37.230 に答える