SageMaker AI 実行ロールの使用方法 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SageMaker AI 実行ロールの使用方法

Amazon SageMaker AI は、ユーザーに代わって他の AWSサービスを使用してオペレーションを実行します。これらのサービスとサービスが動作するリソースを使用するには、SageMaker AI アクセス許可を付与する必要があります。(AWS Identity and Access ManagementIAM) 実行ロールを使用して、SageMaker AI にこれらのアクセス許可を付与します。IAM ロールの詳細については、「IAM ロール」を参照してください。

実行ロールを作成して使用するには、以下の手順を実行します。

実行ロールを作成する

以下の手順を実行して、IAM 管理ポリシー AmazonSageMakerFullAccess をアタッチした実行ロールを作成します。詳細なアクセス許可が必要なユースケースの場合は、このページの他のセクションを使用して、ビジネスニーズを満たす実行ロールを作成します。SageMaker AI コンソールまたは AWS CLI を使用して実行ロールを作成できます。

重要

以下の手順で使用されている IAM 管理ポリシー AmazonSageMakerFullAccess では、名前に SageMakerSagemakersagemakeraws-glue を持つ特定の Amazon S3 アクションをバケットまたはオブジェクトで実行するアクセス許可のみが実行ロールに付与されます。実行ロールにポリシーを追加して、他の Amazon S3 バケットやオブジェクトへのアクセス権を付与する方法については、「SageMaker AI 実行ロールにその他の Amazon S3 アクセス許可を追加する」を参照してください。

注記

SageMaker AI ドメインまたはノートブックインスタンスを作成する際に、実行ロールを直接作成できます。

SageMaker AI コンソールから新しい実行ロールを作成する

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [Roles] (ロール)、[Create role] (ロールの作成) の順に選択します。

  3. [AWS サービス][信頼されたエンティティ] タイプのままにし、下矢印を使用して [他の AWS のサービスのユースケース][SageMaker AI] を検索します。

  4. [SageMaker AI — 実行][次へ] の順に選択します。

  5. IAM マネージドポリシー AmazonSageMakerFullAccess は、ロールに自動的にアタッチされます。このポリシーに含まれるアクセス許可を表示するには、ポリシー名の横にあるプラス (+) 記号を選択します。[次へ] を選択します。

  6. [ロール名][説明] を入力します。

  7. (オプション) ロールにアクセス許可とタグを追加します。

  8. [ロールの作成] を選択してください。

  9. IAM コンソールの [ロール] セクションで、先ほど作成したロールを検索します。必要に応じて、テキストボックスを使用してロール名でロールを検索します。

  10. ロールの概要ページにある ARN を書き留めておきます。

AWS CLI から新しい実行ロールを作成する

を使用して実行ロールを作成する前にAWS CLI、「」の手順に従って実行ロールを更新および設定し(オプション) を設定するAWS CLI、「」の手順に進みますを使用したカスタムセットアップAWS CLI

実行ロールを作成したら、それを SageMaker AI ドメイン、ユーザープロファイル、または Jupyter Notebook インスタンスに関連付けることができます。

実行ロールの ARN を API コールに渡すこともできます。例えば、Amazon SageMaker Python SDK を使用すると、実行ロールの ARN を推定器に渡すことができます。以下のコードサンプルでは、XGBoost アルゴリズムコンテナを使用して推定器を作成し、実行ロールの ARN をパラメータとして渡します。GitHub のサンプル全体については、「Customer Churn Prediction with XGBoost」を参照してください。

import sagemaker, boto3 from sagemaker import image_uris sess = sagemaker.Session() region = sess.boto_region_name bucket = sess.default_bucket() prefix = "sagemaker/DEMO-xgboost-churn" container = sagemaker.image_uris.retrieve("xgboost", region, "1.7-1") xgb = sagemaker.estimator.Estimator( container, execution-role-ARN, instance_count=1, instance_type="ml.m4.xlarge", output_path="s3://{}/{}/output".format(bucket, prefix), sagemaker_session=sess, ) ...

SageMaker AI 実行ロールにその他の Amazon S3 アクセス許可を追加する

Amazon S3 のリソース (入力データなど) で SageMaker AI 機能を使用する場合、これらのリソースにアクセスする際には、リクエストで指定した実行ロール (CreateTrainingJob など) が使用されます。

IAM 管理ポリシー AmazonSageMakerFullAccess を実行ロールにアタッチすると、そのロールには、名前に SageMakerSagemakersagemakeraws-glue を持つ特定の Amazon S3 アクションをバケットやオブジェクトで実行するためのアクセス許可が付与されます。また、Amazon S3 リソースで以下のアクションを実行するアクセス許可が付与されます。

"s3:CreateBucket", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:GetBucketCors", "s3:PutBucketCors"

Amazon S3 の 1 つ以上の特定のバケットにアクセスするためのアクセス許可を実行ロールに付与するには、以下のようなポリシーをロールにアタッチします。このポリシーは、AmazonSageMakerFullAccess が許可するすべてのアクションを実行するアクセス許可を IAM ロールに付与します。ただし、アクセスは amzn-s3-demo-bucket1 バケットと amzn-s3-demo-bucket2 バケットに制限されます。機能に必要な Amazon S3 アクセス許可の詳細については、使用する特定の SageMaker AI 機能のセキュリティドキュメントを参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:GetBucketCors", "s3:PutBucketCors" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket2" ] } ] }

実行ロールを取得する

SageMaker AI コンソールAmazon SageMaker Python SDK、または AWS CLI を使用して、SageMaker AI ドメイン、スペース、またはユーザープロファイルにアタッチされた実行ロールの ARN と名前を取得できます。

ドメインの実行ロールを取得する

ドメインの実行ロールを検索する手順は次のとおりです。

ドメインにアタッチされた実行ロールを検索する
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールを開きます。

  2. 左側のナビゲーションペインで、[管理者設定] の下にある [ドメイン] を選択します。

  3. ドメインに対応するリンクをクリックします。

  4. [ドメインの設定] タブを選択します。

  5. [全般設定] セクションでは、[実行ロール] に実行ロール ARN が一覧表示されます。

    実行ロール ARN の 最後の / の後にあるのが、実行ロール名です。

スペースの実行ロールを取得する

スペースの実行ロールを検索する手順は次のとおりです。

スペースにアタッチされた実行ロールを検索する
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールを開きます。

  2. 左側のナビゲーションペインで、[管理者設定] の下にある [ドメイン] を選択します。

  3. ドメインに対応するリンクをクリックします。

  4. [スペース管理] タブをクリックします。

  5. [詳細] セクションでは、[実行ロール] に実行ロール ARN が一覧表示されます。

    実行ロール ARN の 最後の / の後にあるのが、実行ロール名です。

注記

次のコードは、Amazon SageMaker Studio の IDE など、SageMaker 環境で実行されることを意図したものです。SageMaker AI 環境以外で get_execution_role を実行すると、エラーが発生します。

次の get_execution_role Amazon SageMaker Python SDK コマンドを使用すると、スペースにアタッチされた実行ロールの ARN を取得できます。

from sagemaker import get_execution_role role = get_execution_role() print(role)

実行ロール ARN の 最後の / の後にあるのが、実行ロール名です。

ユーザーの実行ロールを取得する

ユーザーの実行ロールを検索する手順は次のとおりです。

ユーザーにアタッチされた実行ロールを検索する
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールを開きます。

  2. 左側のナビゲーションペインで、[管理者設定] の下にある [ドメイン] を選択します。

  3. ドメインに対応するリンクをクリックします。

  4. [ユーザープロファイル] タブを選択します。

  5. ユーザーに対応するリンクをクリックします。

  6. [詳細] セクションでは、[実行ロール] に実行ロール ARN が一覧表示されます。

    実行ロール ARN の 最後の / の後にあるのが、実行ロール名です。

注記

次の例を使用するには、 AWS Command Line Interface(AWS CLI) をインストールして設定する必要があります。詳細については、「AWS Command Line Interface バージョン 2 用ユーザーガイド」の「Get started with the AWS CLI」を参照してください。

次の get-caller-identityAWS CLI コマンドは、リクエストの認証に使用される IAM ID に関する情報を表示します。呼び出したのは IAM ユーザーです。

aws sts get-caller-identity

実行ロール ARN の 最後の / の後にあるのが、実行ロール名です。

実行ロールを変更する

実行ロールとは、SageMaker AI のアイデンティティ (SageMaker AI ユーザー、スペース、ドメインなど) が引き受ける IAM ロールです。IAM ロールを変更すると、そのロールを引き受けるすべての ID のアクセス許可が変更されます。

実行ロールを変更すると、対応するスペースの実行ロールも変更されます。変更の影響が伝播されるまでに時間がかかる場合があります。

  • ユーザーの実行ロールを変更すると、そのユーザーが作成したプライベートスペースが、変更された実行ロールを引き受けます。

  • スペースのデフォルトの実行ロールを変更すると、ドメインの共有スペースが、変更された実行ロールを引き受けます。

実行ロールとスペースの詳細については、「ドメインスペースのアクセス許可と実行ロールを理解する」を参照してください。

次のいずれかの手順を使用して、アイデンティティの実行ロールを別の IAM ロールに変更できます。

代わりに、アイデンティティが引き受けているロールを変更する場合は、「実行ロールのアクセス許可を変更する」を参照してください。

ドメインのデフォルト実行ロールを変更する

ドメインのデフォルトの実行ロールを変更する手順は次のとおりです。

ドメインにアタッチされたデフォルトの実行ロールを変更する
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールを開きます。

  2. 左側のナビゲーションペインで、[管理者設定] の下にある [ドメイン] を選択します。

  3. ドメインに対応するリンクをクリックします。

  4. [ドメインの設定] タブを選択します。

  5. [全般設定] セクションで、[編集] をクリックします。

  6. [アクセス許可] セクションの [デフォルトの実行ロール] の下で、ドロップダウンリストを展開します。

  7. ドロップダウンリストを使用して、既存のロールを選択することも、カスタム IAM ロール ARN を入力することも、新しいロールを作成することもできます。

    新しいロールを作成する場合は、[ロール作成ウィザードを使用してロールを作成] オプションを選択できます。

  8. 次のステップで [次へ] をクリックして、最後のステップで [送信] をクリックします。

スペースのデフォルトの実行ロールを変更する

スペースのデフォルトの実行ロールを変更する手順は次のとおりです。この実行ロールを変更すると、ドメイン内のすべての共有スペースが引き受けるロールが変更されます。

新しいスペースを作成する際に、スペースのデフォルトの実行ロールを変更する
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールを開きます。

  2. 左側のナビゲーションペインで、[管理者設定] の下にある [ドメイン] を選択します。

  3. ドメインに対応するリンクをクリックします。

  4. [ドメインの設定] タブを選択します。

  5. [全般設定] セクションで、[編集] をクリックします。

  6. [アクセス許可] セクションの [スペースのデフォルトの実行ロール] の下で、ドロップダウンリストを展開します。

  7. ドロップダウンリストを使用して、既存のロールを選択することも、カスタム IAM ロール ARN を入力することも、新しいロールを作成することもできます。

    新しいロールを作成する場合は、[ロール作成ウィザードを使用してロールを作成] オプションを選択できます。

  8. 次のステップで [次へ] をクリックして、最後のステップで [送信] をクリックします。

ユーザープロファイルの実行ロールを変更する

ユーザープロファイルの実行ロールを変更する手順は次のとおりです。この実行ロールを変更すると、このユーザーが作成したすべてのプライベートスペースが引き受けるロールが変更されます。

ユーザーにアタッチされた実行ロールを変更する
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールを開きます。

  2. 左側のナビゲーションペインで、[管理者設定] の下にある [ドメイン] を選択します。

  3. ドメインに対応するリンクをクリックします。

  4. [ユーザープロファイル] タブを選択します。

  5. ユーザープロファイル名に対応するリンクをクリックします。

  6. [編集] を選択します。

  7. ドロップダウンリストを使用して、既存のロールを選択することも、カスタム IAM ロール ARN を入力することも、新しいロールを作成することもできます。

    新しいロールを作成する場合は、[ロール作成ウィザードを使用してロールを作成] オプションを選択できます。

  8. 次のステップで [次へ] をクリックして、最後のステップで [送信] をクリックします。

実行ロールのアクセス許可を変更する

アイデンティティ (SageMaker AI ユーザー、スペース、ドメインなど) の実行ロールに対する既存のアクセス許可は変更できます。これを行うには、アイデンティティが引き受けている適切な IAM ロールを検索してから、その IAM ロールを変更します。コンソールを使用してこれを実行する手順は次のとおりです。

実行ロールを変更すると、対応するスペースの実行ロールも変更されます。この変更は直ちには反映されない場合があります。

  • ユーザーの実行ロールを変更すると、そのユーザーが作成したプライベートスペースが、変更された実行ロールを引き受けます。

  • スペースのデフォルトの実行ロールを変更すると、ドメインの共有スペースが、変更された実行ロールを引き受けます。

実行ロールとスペースの詳細については、「ドメインスペースのアクセス許可と実行ロールを理解する」を参照してください。

代わりに、アイデンティティが引き受けているロールを変更する場合は、「実行ロールを変更する」を参照してください。

アクセス許可を実行ロールに変更するには
  1. まず、変更する ID の名前を取得します。

  2. ID が引き受けているロールを変更するには、「AWS Identity and Access Management ユーザーガイド」の「ロールの変更」を参照してください。

    IAM ID にアクセス許可を追加する詳細と手順については、「AWS Identity and Access Management ユーザーガイド」の「IAM ID のアクセス許可の追加および削除」を参照してください。

ロールを渡す

サービス間でのロールの受け渡しなどのアクションは、SageMaker AI 内の一般的な機能です。詳細については、「サービス認証リファレンス」の「SageMaker AI のアクション、リソース、条件キー」を参照してください。

ロール (iam:PassRole) は、以下の API コールを行う際に渡します。CreateAutoMLJobCreateCompilationJobCreateDomainCreateFeatureGroupCreateFlowDefinitonCreateHyperParameterTuningJobCreateImageCreateLabelingJobCreateModelCreateMonitoringScheduleCreateNotebookInstanceCreateProcessingJobCreateTrainingJobCreateUserProfileRenderUiTemplateUpdateImageUpdateNotebookInstance

ロールを引き受ける SageMaker AI にプリンシパルアクセス許可を付与する IAM ロールに次の信頼ポリシーをアタッチします。これはすべての実行ロールに対して同じです。

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

ロールに付与する必要があるアクセス許可は、呼び出す API によって異なります。以下のセクションでは、これらのアクセス許可について説明します。

注記

アクセス許可ポリシーを作成してアクセス許可を管理する代わりに、 AWSマネージドアクセスAmazonSageMakerFullAccess許可ポリシーを使用できます。SageMaker AI で実行する可能性のあるすべてのアクションに対応できるように、このポリシーのアクセス許可範囲は広くなっています。多くのアクセス許可を付与する理由に関する情報を含むポリシーのリストについては、「AWSマネージドポリシー: AmazonSageMakerFullAccess」を参照してください。カスタムポリシーを作成してアクセス許可を管理し、実行ロールで実行する必要があるアクションにのみアクセス許可を適用する場合は、以下のトピックを参照してください。

重要

問題が発生した場合は、「Amazon SageMaker AI のアイデンティティとアクセスのトラブルシューティング」を参照してください。

IAM ロールの詳細については、「サービス認証リファレンス」の「IAM ロール」を参照してください。

CreateAutoMLJob と CreateAutoMLJobV2 API: 実行ロールのアクセス許可

CreateAutoMLJob または CreateAutoMLJobV2 API リクエストで渡すことのできる実行ロールについては、次の最小アクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "sagemaker:DescribeEndpointConfig", "sagemaker:DescribeModel", "sagemaker:InvokeEndpoint", "sagemaker:ListTags", "sagemaker:DescribeEndpoint", "sagemaker:CreateModel", "sagemaker:CreateEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DeleteModel", "sagemaker:DeleteEndpointConfig", "sagemaker:DeleteEndpoint", "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

AutoML ジョブにプライベート VPC を指定する場合、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

入力が KMS マネージドキー (SSE-KMS) AWSによるサーバー側の暗号化を使用して暗号化されている場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

AutoML ジョブの出力設定に KMS キーを指定する場合、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

AutoML ジョブのリソース設定にボリューム KMS キーを指定する場合、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateDomain API: 実行ロールアクセス許可

IAM Identity Center を使用するドメインの実行ロールと IAM ドメインのユーザー/実行ロールは、AWS KMSカスタマーマネージドキーを CreateDomain API リクエストKmsKeyIdの として渡すときに、次のアクセス許可が必要です。アクセス許可は、CreateApp API コールの際に適用されます。

CreateDomain API リクエストで渡すことのできる実行ロールについては、次のアクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/kms-key-id" } ] }

また、アクセス許可が KMS ポリシーで指定されている場合は、以下のポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/ExecutionRole" ] }, "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }

CreateImage API と UpdateImage API: 実行ロールアクセス許可

CreateImage または UpdateImage API リクエストで渡すことのできる実行ロールについては、以下のアクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

CreateNotebookInstance API: 実行ロールアクセス許可

CreateNotebookInstance API を呼び出すために実行ロールに付与されるアクセス許可は、ノートブックインスタンスで行う予定の作業によって異なります。これを使用して SageMaker AI API を呼び出し、CreateTrainingJob および CreateModel API を呼び出す際に同じロールを渡すことを計画している場合は、以下のアクセス許可ポリシーをロールにアタッチします。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:*", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:SetRepositoryPolicy", "ecr:CompleteLayerUpload", "ecr:BatchDeleteImage", "ecr:UploadLayerPart", "ecr:DeleteRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:DeleteRepository", "ecr:PutImage", "ecr:CreateRepository", "cloudwatch:PutMetricData", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents", "s3:CreateBucket", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "robomaker:CreateSimulationApplication", "robomaker:DescribeSimulationApplication", "robomaker:DeleteSimulationApplication", "robomaker:CreateSimulationJob", "robomaker:DescribeSimulationJob", "robomaker:CancelSimulationJob", "ec2:CreateVpcEndpoint", "ec2:DescribeRouteTables", "elasticfilesystem:DescribeMountTargets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:*:*:*sagemaker*", "arn:aws:codecommit:*:*:*SageMaker*", "arn:aws:codecommit:*:*:*Sagemaker*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } } ] }

アクセス許可を絞り込むには、次のように "Resource": "*" を制限することで、アクセス許可を特定の Amazon S3 リソースや Amazon ECR リソースに限定します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:*", "ecr:GetAuthorizationToken", "cloudwatch:PutMetricData", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object1", "arn:aws:s3:::outputbucket/path", "arn:aws:s3:::inputbucket/object2", "arn:aws:s3:::inputbucket/object3" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "arn:aws:ecr:us-east-1:111122223333:repository/my-repo1", "arn:aws:ecr:us-east-1:111122223333:repository/my-repo2", "arn:aws:ecr:us-east-1:111122223333:repository/my-repo3" ] } ] }

Amazon DynamoDB や Amazon Relational Database Service などの他のリソースにアクセスする場合は、関連するアクセス許可をこのポリシーに追加します。

上記のポリシーでは、ポリシーの適用範囲を次のように指定します。

  • s3:ListBucket アクセス許可の適用範囲を、InputDataConfig.DataSource.S3DataSource.S3Uri リクエストで CreateTrainingJob として指定した特定のバケットに設定します。

  • s3:GetObject s3:PutObject、および s3:DeleteObject アクセス許可の範囲を次のように設定します。

    • CreateTrainingJob リクエストで指定する以下の値に範囲を設定します。

      InputDataConfig.DataSource.S3DataSource.S3Uri

      OutputDataConfig.S3OutputPath

    • CreateModel リクエストで指定する以下の値に範囲を設定します。

      PrimaryContainer.ModelDataUrl

      SuplementalContainers.ModelDataUrl

  • ecr アクセス許可の範囲を次のように設定します。

    • AlgorithmSpecification.TrainingImage リクエストで指定する CreateTrainingJob 値に範囲を設定します。

    • PrimaryContainer.Image リクエストで指定する CreateModel 値に範囲を設定します。

cloudwatch および logs アクションは "*" リソースに適用できます。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch リソースおよびオペレーション」を参照してください。

CreateHyperParameterTuningJob API: 実行ロールアクセス許可

CreateHyperParameterTuningJob API リクエストで渡すことのできる実行ロールについては、次のアクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

"Resource": "*" を指定する代わりに、これらのアクセス許可の範囲を特定の Amazon S3 リソース、Amazon ECR リソース、Amazon CloudWatch Logs リソースに設定できます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object", "arn:aws:s3:::outputbucket/path" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-repo" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/TrainingJobs*" } ] }

ハイパーパラメータチューニングジョブに関連付けられているトレーニングコンテナが、DynamoDB リソースや Amazon RDS リソースなどの他のデータソースにアクセスする必要がある場合、このポリシーに適切なアクセス許可を追加します。

上記のポリシーでは、ポリシーの適用範囲を次のように指定します。

  • s3:ListBucket アクセス許可の範囲を、InputDataConfig.DataSource.S3DataSource.S3Uri リクエストで CreateTrainingJob として指定した特定のバケットに設定します。

  • s3:GetObject および s3:PutObject アクセス許可の範囲を、CreateHyperParameterTuningJob リクエストの入力および出力データ設定で指定する次のオブジェクトに設定します。

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • Amazon ECR アクセス許可の範囲を、CreateHyperParameterTuningJob リクエストで指定するレジストリパス (AlgorithmSpecification.TrainingImage) に設定します。

  • Amazon CloudWatch Logs のアクセス許可の範囲を、SageMaker トレーニングジョブのロググループに設定します。

cloudwatch アクションは "*" リソースに適用できます。詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch Resources and Operations」を参照してください。

ハイパーパラメータ調整ジョブにプライベート VPC を指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

入力が KMS マネージドキー (SSE-KMS) AWSによるサーバー側の暗号化を使用して暗号化されている場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

ハイパーパラメータの調整ジョブの出力設定に KMS キーを指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

ハイパーパラメータの調整ジョブのリソース設定にボリューム KMS キーを指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateProcessingJob API: 実行ロールのアクセス許可

CreateProcessingJob API リクエストで渡すことのできる実行ロールについては、次のアクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

"Resource": "*" を指定する代わりに、これらのアクセス許可の範囲を特定の Amazon S3 リソースおよび Amazon ECR リソースに設定できます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object", "arn:aws:s3:::outputbucket/path" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-repo" } ] }

CreateProcessingJob.AppSpecification.ImageUri が DynamoDB リソースや Amazon RDS リソースなどの他のデータソースにアクセスする必要がある場合は、関連するアクセス許可をこのポリシーに追加します。

上記のポリシーでは、ポリシーの適用範囲を次のように指定します。

  • s3:ListBucket アクセス許可の範囲を、ProcessingInputs リクエストで CreateProcessingJob として指定した特定のバケットに設定します。

  • s3:GetObject および s3:PutObject アクセス許可の範囲を、CreateProcessingJob リクエストの ProcessingInputs および ProcessingOutputConfig でダウンロードもしくはアップロードされるオブジェクトに設定します。

  • Amazon ECR アクセス許可の範囲を、CreateProcessingJob リクエストで指定するレジストリパス (AppSpecification.ImageUri) に設定します。

cloudwatch および logs アクションは "*" リソースに適用できます。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch リソースおよびオペレーション」を参照してください。

処理ジョブにプライベート VPC を指定する場合は、次のアクセス許可を追加します。ポリシーの範囲に条件やリソースフィルターを含めないでください。そうしないと、処理ジョブの作成中に行われる検証チェックが失敗します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

入力が KMS マネージドキー (SSE-KMS) AWSによるサーバー側の暗号化を使用して暗号化されている場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

処理ジョブの出力設定に KMS キーを指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

処理ジョブのリソース設定でボリューム KMS キーを指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateTrainingJob API: 実行ロールアクセス許可

CreateTrainingJob API リクエストで渡すことのできる実行ロールについては、次のアクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

"Resource": "*" を指定する代わりに、これらのアクセス許可の範囲を特定の Amazon S3 リソースおよび Amazon ECR リソースに設定できます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object", "arn:aws:s3:::outputbucket/path" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-repo" } ] }

CreateTrainingJob.AlgorithSpecifications.TrainingImage が DynamoDB リソースや Amazon RDS リソースなどの他のデータソースにアクセスする必要がある場合は、関連するアクセス許可をこのポリシーに追加します。

上記のポリシーでは、ポリシーの適用範囲を次のように指定します。

  • s3:ListBucket アクセス許可の範囲を、InputDataConfig.DataSource.S3DataSource.S3Uri リクエストで CreateTrainingJob として指定した特定のバケットに設定します。

  • s3:GetObject および s3:PutObject アクセス許可の範囲を、CreateTrainingJob リクエストの入力および出力データ設定で指定する次のオブジェクトに設定します。

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • Amazon ECR アクセス許可の範囲を、CreateTrainingJob リクエストで指定するレジストリパス (AlgorithmSpecification.TrainingImage) に設定します。

cloudwatch および logs アクションは "*" リソースに適用できます。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch リソースおよびオペレーション」を参照してください。

トレーニングジョブにプライベート VPC を指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

入力が KMS マネージドキー (SSE-KMS) AWSによるサーバー側の暗号化を使用して暗号化されている場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

トレーニングジョブの出力設定に KMS キーを指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

トレーニングジョブのリソース設定にボリューム KMS キーを指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateModel API: 実行ロールアクセス許可

CreateModel API リクエストで渡すことのできる実行ロールについては、次のアクセス許可ポリシーをロールにアタッチできます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

"Resource": "*" を指定する代わりに、これらのアクセス許可の範囲を特定の Amazon S3 リソースおよび Amazon ECR リソースに設定できます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "arn:aws:ecr:us-east-1:111122223333:repository/my-repo", "arn:aws:ecr:us-east-1:111122223333:repository/my-repo" ] } ] }

CreateModel.PrimaryContainer.Image が Amazon DynamoDB リソースや Amazon RDS リソースなどの他のデータソースにアクセスする必要がある場合は、関連するアクセス許可をこのポリシーに追加します。

上記のポリシーでは、ポリシーの適用範囲を次のように指定します。

  • S3 アクセス許可の範囲を、PrimaryContainer.ModelDataUrl リクエストの CreateModel で指定するオブジェクトに設定します。

  • Amazon ECR アクセス許可の範囲を、CreateModel リクエストで PrimaryContainer.Image および SecondaryContainer.Image として指定する特定のレジストリパスに設定します。

cloudwatch および logs アクションは "*" リソースに適用できます。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch リソースおよびオペレーション」を参照してください。

注記

SageMaker AI デプロイガードレール機能を本番環境でのモデルデプロイに使用する場合は、実行ロールに自動ロールバックアラームの cloudwatch:DescribeAlarms アクションを実行するアクセス許可があるようにします。

モデルにプライベート VPC を指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }