SageMaker ロール - Amazon SageMaker

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

SageMaker ロール

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

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

実行ロールを作成する

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

重要

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

注記

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

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

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

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

  3. AWS サービスを信頼できるエンティティタイプとして維持し、下矢印を使用して他の サービスのユースケースSageMakerで検索します。 AWS

  4. 選択 SageMaker — 実行を選択し、次へを選択します。

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

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

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

  8. [ロールの作成] を選択します。

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

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

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

AWS CLI を使用して実行ロールを作成する前に、AWS CLI の前提条件 に記載されている手順に従って実行ロールを更新または設定してから、AWS CLI からのオンボード の手順に進みます。

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

実行ロールの ARN を API コールに渡すこともできます。例えば、Amazon SageMaker Python SDK を使用して、実行ロールの ARN を推定器に渡すことができます。以下のコードサンプルでは、XGBoost アルゴリズムコンテナを使用して推定器を作成し、実行ロールの ARN をパラメータとして渡します。の完全な例については GitHub、「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 実行ロールに Amazon S3 アクセス許可を追加する

入力データなどの Amazon S3 のリソースで SageMaker 機能を使用する場合、リクエストで指定した実行ロール (例: 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 ロールに付与しますが、アクセスはバケット DOC-EXAMPLE-BUCKET1DOC-EXAMPLE-BUCKET2 に制限されます。その SageMaker 機能に必要な Amazon S3 アクセス許可の詳細については、使用している特定の機能のセキュリティドキュメントを参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "arn:aws:s3:::DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET2" ] } ] }

実行ロールを取得する

SageMaker コンソールまたは を使用してAWS CLI、 SageMaker ドメイン、ユーザープロファイル、またはノートブックインスタンスにアタッチされた実行ロールの ARN を取得できます。

  • SageMaker ドメインにアタッチされた IAM 実行ロールの ARN を確認するには、「」を参照してくださいドメインの表示と編集

  • ユーザープロファイルにアタッチされている IAM 実行ロールの ARN を確認するには、「ユーザープロファイルとユーザープロファイルの詳細の表示」を参照してください。

  • ノートブックインスタンスにアタッチされている IAM 実行ロールの ARN を確認するには、以下を実行します。

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

    2. 左側のナビゲーションペインで、[ノートブック][ノートブックインスタンス] の順に選択します。

    3. ノートブックのリストから、表示するノートブックを選択します。

    4. ARN は [アクセス許可と暗号化] セクションにあります。

または、Amazon SageMaker Python SDK ユーザーは、次のコードを実行して、ユーザープロファイルまたはノートブックインスタンスにアタッチされた実行ロールの ARN を取得できます。

import sagemaker sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role()
注記

実行ロールは、 内でノートブックを実行する場合にのみ使用できます SageMaker。でないノートブックget_execution_roleで を実行すると SageMaker、「リージョン」エラーが発生します。

ロールを渡す

サービス間でロールを渡すなどのアクションは、 内の一般的な機能です SageMaker。詳細については、IAM ユーザーガイドの「 のアクション、リソース、および条件キー SageMaker」を参照してください。

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

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

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

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

注記

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

重要

問題が発生した場合は、「Amazon SageMaker Identity and Access のトラブルシューティング」を参照してください。

IAM ロールの詳細については、IAM ユーザーガイドIAM ロールを参照してください。

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

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

{ "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" ] }

入力が AWS KMS で管理されたキー (SSE-KMS) を使用したサーバー側の暗号化で暗号化されている場合、次のアクセス許可を追加します。

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

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

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

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

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

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:region:account-id:key/kms-key-id" } ] }

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

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

CreateImage および UpdateImage APIs 実行ロールのアクセス許可

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } } ] }

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

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

{ "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 リソースに限定します。

{ "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:region::repository/my-repo1", "arn:aws:ecr:region::repository/my-repo2", "arn:aws:ecr:region::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 リクエストで渡すことのできる実行ロールについては、次のアクセス許可ポリシーをロールにアタッチできます。

{ "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 リソースにスコープできます。

{ "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:region::repository/my-repo" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:*:*: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 」を参照してください。

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

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

入力が AWS KMS で管理されたキー (SSE-KMS) を使用したサーバー側の暗号化で暗号化されている場合、次のアクセス許可を追加します。

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

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

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

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

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

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

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

{ "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 リソースに設定できます。

{ "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:region::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" ] }

入力が AWS KMS で管理されたキー (SSE-KMS) を使用したサーバー側の暗号化で暗号化されている場合、次のアクセス許可を追加します。

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

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

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

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

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

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

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

{ "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 リソースに設定できます。

{ "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:region::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" ] }

入力が AWS KMS で管理されたキー (SSE-KMS) を使用したサーバー側の暗号化で暗号化されている場合、次のアクセス許可を追加します。

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

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

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

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

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

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

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

{ "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 リソースに設定できます。

{ "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:region::repository/my-repo", "arn:aws:ecr:region::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 デプロイにデプロイガードレール機能を使用する予定がある場合は、実行ロールに自動ロールバックアラームで cloudwatch:DescribeAlarmsアクションを実行するアクセス許可があることを確認してください。

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

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