Pythonでsagemakerからget_execution_role()を呼び出すと、エラーが発生します。同じエラーを添付しました。
SagemakerFullAccessポリシーをロールとユーザーの両方に追加しました。
get_execution_role()は、 Amazon SageMakerの例GitHubリポジトリ で使用される関数ヘルパーです。
これらの例は、AmazonSageMakerが提供するフルマネージドのJupyterノートブックから実行するために作成されました。
これらのノートブック内から、get_execution_role()は、ノートブック作成の一部として渡されたIAMロール名を返します。これにより、コードを変更せずにノートブックの例を実行できます。
これらのノートブックの外部から、get_execution_role()は、SageMakerが必要とするロール名がわからないため、例外を返します。
この問題を解決するには、IAMロール名を渡しますget_execution_role()を使用する代わりに
の代わりに:
role = get_execution_role()
kmeans = KMeans(role=role,
train_instance_count=2,
train_instance_type='ml.c4.8xlarge',
output_path=output_location,
k=10,
data_location=data_location)
あなたがする必要があります:
role = 'role_name_with_sagemaker_permissions'
kmeans = KMeans(role=role,
train_instance_count=2,
train_instance_type='ml.c4.8xlarge',
output_path=output_location,
k=10,
data_location=data_location)
私はしばらくこれに苦労しました、そしていくつかの異なる部分があります、しかし私はこれらが解決するためのステップであると信じています(これによると doc )
Aws設定ファイルにロールを追加する必要があります。ターミナルに移動して、次のように入力します。
~/.aws/config
独自のプロファイルを追加する
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadmin
source_profile = default
次に、AWSダッシュボードで信頼関係を編集します。
これを追加して更新します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "sagemaker.amazonaws.com",
"AWS": "arn:aws:iam::XXXXXXX:user/YOURUSERNAME"
},
"Action": "sts:AssumeRole"
}
]
}
最後に、私は言うリンクをクリックしました
コンソールで役割を切り替えることができるユーザーにこのリンクを提供します
私の資格情報を追加した後-それは機能しました。
sageMakerをお試しいただきありがとうございます。
あなたが見ている例外はすでに理由を示唆しています。使用している資格情報は役割の資格情報ではありませんが、ほとんどの場合ユーザーです。 「ユーザー」資格情報の形式は次のようになります。
ロールではなく「arn:aws:iam :: accid:user/name」:「arn:aws:iam :: accid:role/name」
お役に立てれば!