SageMaker ロール - Amazon SageMaker

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

SageMaker ロール

Amazon SageMaker は、 AWS 他のサービスを使用してお客様に代わって操作を実行します。これらのサービスとサービスの対象となるリソースを使用するには、 SageMaker アクセス権限を付与する必要があります。 SageMakerこれらのアクセス権限は AWS Identity and Access Management (IAM) 実行ロールを使用して付与します。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 serviceTrusted エンティティタイプのままにし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 コンソールまたはを使用して、 SageMaker ドメイン、ユーザープロファイル、またはノートブックインスタンスにアタッチされた実行ロールの ARN を取得できます。 AWS CLI

  • 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内部の一般的な機能です。のアクション、リソース、条件キーの詳細については SageMaker、 IAM ユーザーガイドを参照してください

API 呼び出しを行う際にはCreateAutoMLJob、、、、、、、、CreateCompilationJobCreateDomainCreateFeatureGroupCreateFlowDefinitonCreateHyperParameterTuningJobCreateImageCreateLabelingJobCreateModelCreateMonitoringScheduleCreateNotebookInstanceCreateProcessingJobCreateTrainingJobCreateUserProfileRenderUiTemplateUpdateImage、というロール (iam:PassRole) を渡します。UpdateNotebookInstance

IAM ロールに次の信頼ポリシーをアタッチします。これにより、 SageMaker そのロールを引き受けるためのプリンシパルアクセス権限が付与されます。この信頼ポリシーはすべての実行ロールで同じです。

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

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

注記

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

重要

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

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

KMS AWS 管理キー (SSE-KMS) によるサーバー側の暗号化 (SSE-KMS) を使用して入力を暗号化する場合は、次の権限を追加します。

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

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

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

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

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

CreateDomain API: 実行ロール権限

API AWS KMS リクエストでカスタマー管理キーを渡す場合、IAM Identity Center を使用するドメインの実行ロールと IAM ドメインのユーザー/実行ロールには次の権限が必要です。KmsKeyId CreateDomainアクセス許可は、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 API: 実行ロール権限

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 を呼び出すために実行ロールに付与されるアクセス許可は、ノートブックインスタンスで行う予定の作業によって異なります。API の呼び出しに使用し、 SageMaker および API を呼び出すときに同じロールを渡す場合は、以下のアクセス権限ポリシーをロールにアタッチしてください。CreateTrainingJob CreateModel

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

KMS AWS が管理するキー (SSE-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" ] }

KMS AWS が管理するキー (SSE-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" ] }

KMS AWS が管理するキー (SSE-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" ] }