如何使用 SageMaker AI 执行角色 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

如何使用 SageMaker AI 执行角色

Amazon SageMaker AI 使用其他 AWS 服务代表您执行操作。您必须授予 SageMaker AI 权限才能使用这些服务及其操作的资源。您可以使用 AWS Identity and Access Management (IAM) 执行角色向 A SageMaker I 授予这些权限。有关 IAM 角色的更多信息,请参阅 IAM 角色

要创建和使用执行角色,可以使用以下过程。

创建执行角色

使用以下过程创建一个执行角色,并附加 IAM 托管策略 AmazonSageMakerFullAccess。如果您的使用案例需要更精细的权限,请使用本页上的其他部分来创建满足业务需求的执行角色。您可以使用 SageMaker AI 控制台或创建执行角色 AWS CLI。

重要

以下过程中使用的 IAM 管理策略 AmazonSageMakerFullAccess 只授予执行角色对名称中包含 SageMakerSagemakersagemakeraws-glue 的存储桶或对象执行特定 Amazon S3 操作的权限。要了解如何为执行角色添加附加策略,以授予其访问其他 Amazon S3 存储桶和对象的权限,请参阅向 A SageMaker I 执行角色添加其他 Amazon S3 权限

注意

创建 A SageMaker I 域或笔记本实例时,您可以直接创建执行角色。

从 SageMaker AI 控制台创建新的执行角色

  1. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 选择 Role (角色),然后选择 Create role (创建角色)

  3. AWS 服务保留为可信实体类型,然后使用向下箭头在其他 AWS 服务的用例中查找 SageMaker AI

  4. 选择 SageMaker AI-执行,然后选择下一步

  5. IAM 托管策略 AmazonSageMakerFullAccess 会自动附加到角色。要查看此策略中包含的权限,请选择策略名称旁边的加号 (+)。选择下一步

  6. 输入角色名称描述

  7. (可选)向角色添加其他权限和标签。

  8. 选择 Create role(创建角色)。

  9. 在 IAM 控制台的角色部分中,找到刚刚创建的角色。如果需要,请通过文本框使用角色名称搜索角色。

  10. 在角色摘要页面上,记下 ARN。

从 AWS CLI创建新的执行角色

在使用创建执行角色之前 AWS CLI,请务必按照中的说明对其进行更新和配置(可选)配置 AWS CLI,然后继续按照中的说明进行操作使用自定义设置 AWS CLI

创建执行角色后,可以将其与 SageMaker AI 域、用户配置文件或 Jupyter 笔记本实例相关联。

  • 要了解如何将执行角色与现有 SageMaker AI 域相关联,请参阅编辑域设置

  • 要了解如何将执行角色与现有用户配置文件进行关联,请参阅添加用户配置文件

  • 要了解如何将执行角色与现有笔记本实例进行关联,请参阅更新笔记本实例

您也可以将执行角色的 ARN 传递给 API 调用。例如,使用 Amaz SageMaker on Python 软件开发工具包,您可以将执行角色的 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, ) ...

向 A SageMaker I 执行角色添加其他 Amazon S3 权限

当您对 Amazon S3 中的资源(例如输入数据)使用 A SageMaker I 功能时,将使用您在请求中指定的执行角色(例如CreateTrainingJob)来访问这些资源。

如果您将 IAM 托管策略 AmazonSageMakerFullAccess 附加到一个执行角色,则该角色有权对名称中包含 SageMakerSagemakersagemakeraws-glue 的存储桶或对象执行某些 Amazon S3 操作。它还有权对任何 Amazon S3 资源执行以下操作:

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

要向执行角色授予访问 Amazon S3 中一个或多个特定存储桶的权限,您可以为该角色附加类似于以下内容的策略。此策略授予 IAM 角色执行 AmazonSageMakerFullAccess 允许的所有操作的权限,但限制其只能访问 amzn-s3-demo-bucket1 和 amzn-s3-demo-bucket2 这两个存储桶。请参阅您正在使用的特定 SageMaker AI 功能的安全文档,详细了解该功能所需的 Amazon S3 权限。

{ "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 控制台、A maz SageMaker on Python 软件开发工具包AWS CLI来检索附加到 SageMaker AI 域、空间或用户资料的执行角色的 ARN 和名称。

获取域执行角色

下面提供了查找域执行角色的说明。

查找域中的执行角色
  1. 打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置下的

  3. 选择与您的域相对应的链接。

  4. 选择域设置选项卡。

  5. 常规设置部分,执行角色 ARN 列在执行角色下。

    执行角色名称位于执行角色 ARN 中最后一个 / 之后。

获取空间执行角色

下面提供了查找空间执行角色的说明。

查找与您的空间相关的执行角色
  1. 打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置下的

  3. 选择与您的域相对应的链接。

  4. 选择空间管理选项卡。

  5. 详情部分,执行角色 ARN 列在执行角色下。

    执行角色名称位于执行角色 ARN 中最后一个 / 之后。

注意

以下代码旨在在 SageMaker AI 环境中运行,就像 Amazon SageMaker Studio IDEs 中的任何代码一样。如果您在 SageMaker AI 环境get_execution_role之外运行,则会收到错误消息。

以下 get_execution_roleAmaz SageMaker on Python 软件开发工具包命令检索附加到空间的执行角色的 ARN。

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

执行角色名称位于执行角色 ARN 中最后一个 / 之后。

获取用户执行角色

下面提供了查找用户执行角色的说明。

查找用户的执行角色
  1. 打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置下的

  3. 选择与您的域相对应的链接。

  4. 选择用户配置文件选项卡。

  5. 选择与用户对应的链接。

  6. 详情部分,执行角色 ARN 列在执行角色下。

    执行角色名称位于执行角色 ARN 中最后一个 / 之后。

注意

要使用以下示例,必须安装并配置 AWS Command Line Interface (AWS CLI)。有关信息,请参阅版本 2 AWS Command Line Interface 用户指南中的AWS CLI入门

以下 get-caller-identity AWS CLI 命令将显示有关用于验证请求的 IAM 身份的信息。调用者是 IAM 用户。

aws sts get-caller-identity

执行角色名称位于执行角色 ARN 中最后一个 / 之后。

更改您的执行角色

执行角色是 A SageMaker I 身份(例如 A SageMaker I 用户、空间或域)担任的 IAM 角色。更改 IAM 角色会更改承担该角色的所有身份的权限。

更改执行角色后,相应空间的执行角色也会随之更改。变化的影响可能需要一些时间来传播。

  • 更改用户的执行角色后,由该用户创建的专用空间将承担更改后的执行角色。

  • 更改空间的默认执行角色后,域中的共享空间将承担更改后的执行角色。

有关执行角色和空间的更多信息,请参阅 了解域空间权限和执行角色

您可以使用以下指令之一将身份的执行角色更改为不同的 IAM 角色。

如果您想修改某个身份所承担的角色,请参阅 修改执行角色(管理控制台)的权限

更改域默认执行角色

下面提供了更改域默认执行角色的说明。

更改域的默认执行角色
  1. 打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置下的

  3. 选择与您的域相对应的链接。

  4. 选择域设置选项卡。

  5. 常规设置部分,选择编辑

  6. 权限部分,在默认执行角色下展开下拉列表。

  7. 在下拉列表中,您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。

    如果要创建新角色,可以选择创建角色向导选项。

  8. 在以下步骤中选择下一步,并在最后一步选择提交。

更改空间默认执行角色

下面提供了更改空间默认执行角色的说明。更改此执行角色将改变域中所有共享空间所承担的角色。

创建新空间时更改空间默认执行角色
  1. 打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置下的

  3. 选择与您的域相对应的链接。

  4. 选择域设置选项卡。

  5. 常规设置部分,选择编辑

  6. 权限部分,在空间默认执行角色下展开下拉列表。

  7. 在下拉列表中,您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。

    如果要创建新角色,可以选择创建角色向导选项。

  8. 在以下步骤中选择下一步,并在最后一步选择提交

更改用户配置文件执行角色

下面提供了更改用户执行角色的说明。更改此执行角色将改变该用户创建的所有专用空间所承担的角色。

更改用户的执行角色
  1. 打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置下的

  3. 选择与您的域相对应的链接。

  4. 选择用户配置文件选项卡。

  5. 选择与用户配置文件名称相对应的链接。

  6. 选择编辑

  7. 在下拉列表中,您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。

    如果要创建新角色,可以选择创建角色向导选项。

  8. 在以下步骤中选择下一步,并在最后一步选择提交

修改执行角色(管理控制台)的权限

您可以修改身份(例如 SageMaker AI 用户、空间或域)执行角色的现有权限。具体做法是找到身份所承担的适当 IAM 角色,然后修改该 IAM 角色。下面将说明如何通过管理控制台实现这一功能。

修改执行角色后,相应空间的执行角色也会随之改变。变化的影响可能不会立竿见影。

  • 修改用户的执行角色后,由该用户创建的专用空间将承担修改后的执行角色。

  • 修改空间的默认执行角色后,域中的共享空间将承担修改后的执行角色。

有关执行角色和空间的更多信息,请参阅 了解域空间权限和执行角色

如果您想更改某个身份所承担的角色,请参阅 更改您的执行角色

修改执行角色的权限
  1. 首先获取要修改的身份名称。

  2. 要修改身份所承担的角色,请参阅《AWS Identity and Access Management 用户指南》中的 修改角色

    有关向 IAM 身份添加权限的更多信息和说明,请参阅《AWS Identity and Access Management 用户指南》中的添加或删除身份权限

传递角色

诸如在服务之间传递角色之类的操作是 A SageMaker I 中的常见功能。您可以在服务授权参考中找到有关 SageMaker AI 的操作、资源和条件密钥的更多详细信息。

在调用这些 API 时,您需要传递角色 (iam:PassRole):CreateAutoMLJobCreateCompilationJobCreateDomainCreateFeatureGroupCreateFlowDefinitonCreateHyperParameterTuningJobCreateImageCreateLabelingJobCreateModelCreateMonitoringScheduleCreateNotebookInstanceCreateProcessingJobCreateTrainingJobCreateUserProfileRenderUiTemplateUpdateImage 以及 UpdateNotebookInstance

您将以下信任策略附加到 IAM 角色,该策略授予 A SageMaker I 委托人担任该角色的权限,所有执行角色的信任策略都相同:

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

您需要授予该角色的权限有所不同,具体取决于您所调用的 API。以下几节解释了这些权限。

注意

您可以使用 AWS-managed 权限策略,而不是通过制定权限策略来管理AmazonSageMakerFullAccess权限。此策略中的权限相当广泛,允许您在 SageMaker AI 中执行任何可能要执行的操作。有关此策略的列表,包括有关添加许多权限的原因的信息,请参阅 AWS 托管策略: AmazonSageMakerFullAccess。如果您更愿意创建自定义策略和管理权限以将权限限定于您需要使用执行角色执行的操作,请参阅以下主题。

重要

有关 IAM 角色的更多信息,请参阅服务授权参考中的 IAM 角色

CreateAutoMLJob 和 CreateAuto MLJob V2 API:执行角色权限

对于可以在 CreateAutoMLJobCreateAutoMLJobV2 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) 进行加密,请添加以下权限:

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

如果在 AutoML 作业的输出配置中指定一个 KMS 密钥,则添加以下权限:

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

如果在 AutoML 作业的资源配置中指定一个批量 KMS 密钥,则添加以下权限:

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

CreateDomain API:执行角色权限

当您在 CreateDomain API 请求中传递 AWS KMS 客户托管密钥时,具有 IAM Identity Center 的域的执行角色和 IAM 域的用户/执行角色需要以下权限。KmsKeyId将在 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:执行角色权限

对于可在 CreateImageUpdateImage API 请求中传递的执行角色,您可以将以下权限策略附加到该角色:

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

CreateNotebookInstance API:执行角色权限

您向执行角色授予调用 CreateNotebookInstance API 的权限取决于您计划对笔记本实例执行的操作。如果您计划在调用 APIs 和时使用它来调用 SageMaker AI CreateTrainingJob 并传递相同的角色 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:PutObjects3:DeleteObject 的权限范围:

    • 将范围限定为您在 CreateTrainingJob 请求中指定的以下值:

      InputDataConfig.DataSource.S3DataSource.S3Uri

      OutputDataConfig.S3OutputPath

    • 将范围限定为您在 CreateModel 请求中指定的以下值:

      PrimaryContainer.ModelDataUrl

      SuplementalContainers.ModelDataUrl

  • 按如下方式确定 ecr 权限的范围:

    • 将范围限定为您在 AlgorithmSpecification.TrainingImage 请求中指定的 CreateTrainingJob 值。

    • 将范围限定为您在 PrimaryContainer.Image 请求中指定的 CreateModel 值:

cloudwatchlogs 操作适用于“*”资源。有关更多信息,请参阅 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": "*" } ] }

您可以将这些权限的范围限定为特定的 Amazon S3、Amazon ECR 和 Amazon L CloudWatch ogs 资源,而不必指定"Resource": "*"

{ "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:PutObjectCreateHyperParameterTuningJob 权限:

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • 仅向您在 CreateHyperParameterTuningJob 请求中指定的注册表路径 (AlgorithmSpecification.TrainingImage) 授予 Amazon ECR 权限。

  • 将 Amazon Lo CloudWatch gs 权限范围限定为记录一组 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) 进行加密,请添加以下权限:

{ "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 请求中要在 ProcessingInputsProcessingOutputConfig 中下载或上传的对象。

  • 仅向您在 CreateProcessingJob 请求中指定的注册表路径 (AppSpecification.ImageUri) 授予 Amazon ECR 权限。

cloudwatchlogs 操作适用于“*”资源。有关更多信息,请参阅 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) 进行加密,请添加以下权限:

{ "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:PutObjectCreateTrainingJob 权限:

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • 仅向您在 CreateTrainingJob 请求中指定的注册表路径 (AlgorithmSpecification.TrainingImage) 授予 Amazon ECR 权限。

cloudwatchlogs 操作适用于“*”资源。有关更多信息,请参阅 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) 进行加密,请添加以下权限:

{ "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 资源),则向此策略添加相关权限。

在上一个策略中,您按如下方式确定策略范围:

  • 仅向您在 PrimaryContainer.ModelDataUrl 请求的 CreateModel 中指定的对象授予 S3 权限。

  • 仅向您在 CreateModel 请求中指定作为 PrimaryContainer.ImageSecondaryContainer.Image 的特定注册表路径授予 Amazon ECR 权限。

cloudwatchlogs 操作适用于“*”资源。有关更多信息,请参阅 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" ] }