如何使用 SageMaker 执行角色 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

如何使用 SageMaker 执行角色

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

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

创建执行角色

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

重要

以下过程中使用的IAM托管策略仅授予执行角色对名称中带有AmazonSageMakerFullAccessSageMakerSagemaker或的存储桶或对象执行某些 Amazon S3 操作aws-glue的权限。sagemaker要了解如何为执行角色添加附加策略,以授予其访问其他 Amazon S3 存储桶和对象的权限,请参阅向 SageMaker 执行角色添加其他 Amazon S3 权限

注意

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

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

  1. 打开IAM控制台,网址为https://console.aws.amazon.com/iam/

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

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

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

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

  6. 输入角色名称描述

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

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

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

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

从 Amazon CLI创建新的执行角色

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

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

您也可以将执行角色ARN的传递给您的API调用。例如,使用 Amaz SageMaker on 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,则该角色有权对名称中带SageMaker有、、或的存储桶或对象执行某些 Amazon S3 操作。Sagemaker sagemaker aws-glue它还有权对任何 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 功能所需的 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 控制台Amaz SageMaker on Python SDKAmazon CLI来检索附加到 SageMaker 域、空间或用户配置文件的执行角色的ARN和名称。

获取域名执行角色

以下内容提供了有关查找域名执行角色的说明。

查找附加到您的域名的执行角色
  1. 打开控制 SageMaker 台,https://console.aws.amazon.com/sagemaker/

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

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

  4. 选择域名设置选项卡。

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

    执行角色名称/在执行角色的最后一个名称之后ARN。

获取空间执行角色

以下内容提供了有关查找空间执行角色的说明。

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

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

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

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

  5. 在 “详细信息” 部分中,执行角色列ARN在 “执行角色” 下。

    执行角色名称/在执行角色的最后一个名称之后ARN。

注意

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

以下 get_execution_roleAmaz SageMaker on Python SDK 命令检索附加到空间的执行角色。ARN

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

执行角色名称/在执行角色的最后一个名称之后ARN。

获取用户执行角色

以下内容提供了有关查找用户执行角色的说明。

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

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

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

  4. 选择 “用户个人资料” 选项卡。

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

  6. 在 “详细信息” 部分中,执行角色列ARN在 “执行角色” 下。

    执行角色名称/在执行角色的最后一个名称之后ARN。

注意

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

以下get-caller-identity Amazon CLI 命令显示有关用于对IAM请求进行身份验证的信息。来电者是IAM用户。

aws sts get-caller-identity

执行角色名称/在执行角色的最后一个名称之后ARN。

更改您的执行角色

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

当您更改执行角色时,相应空间的执行角色也将发生变化。变更的影响可能需要一些时间才能传播。

  • 当您更改用户的执行角色时,该用户创建的私有空间将扮演更改后的执行角色。

  • 当您更改空间的默认执行角色时,域中的共享空间将扮演更改后的执行角色。

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

您可以使用以下说明之一将身份的执行IAM角色更改为其他角色。

相反,如果您想要修改身份所扮演的角色,请参阅修改执行角色的权限

更改域默认执行角色

以下内容提供了有关更改域名的默认执行角色的说明。

更改附加到您的域名的默认执行角色
  1. 打开控制 SageMaker 台,https://console.aws.amazon.com/sagemaker/

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

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

  4. 选择域名设置选项卡。

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

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

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

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

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

更改空间默认执行角色

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

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

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

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

  4. 选择域名设置选项卡。

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

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

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

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

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

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

以下内容提供了有关更改用户执行角色的说明。更改此执行角色将更改该用户创建的所有私有空间所承担的角色。

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

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

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

  4. 选择 “用户个人资料” 选项卡。

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

  6. 选择编辑

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

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

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

修改执行角色的权限

您可以修改身份(例如 SageMaker 用户、空间或域)执行角色的现有权限。这是通过找到身份所承担的适当IAM角色,然后修改该IAM角色来完成的。以下内容将提供有关通过控制台实现此目的的说明。

修改执行角色时,相应空间的执行角色也会发生变化。变更的影响可能不是立竿见影的。

  • 修改用户的执行角色时,该用户创建的私有空间将扮演修改后的执行角色。

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

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

相反,如果您想要更改身份所扮演的角色,请参阅更改您的执行角色

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

  2. 要修改身份所扮演的角色,请参阅Amazon Identity and Access Management 用户指南中的修改角色

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

传递角色

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

在进行以下API调用时,您可以传递角色 (iam:PassRole):CreateAutoMLJobCreateCompilationJobCreateDomainCreateFeatureGroupCreateFlowDefinitonCreateHyperParameterTuningJobCreateImage、、CreateLabelingJobCreateModelCreateMonitoringScheduleCreateNotebookInstanceCreateProcessingJobCreateTrainingJobCreateUserProfile、、RenderUiTemplateUpdateImage、和UpdateNotebookInstance

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

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

您需要向该角色授予的权限因您所调用的角色而异。API以下几节解释了这些权限。

注意

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

重要

如果您遇到问题,请参阅 对 Amazon SageMaker 身份和访问进行故障排除

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

CreateAutoMLJob和 CreateAuto MLJobV2API:执行角色权限

对于可以在CreateAutoMLJobCreateAutoMLJobV2API请求中传递的执行角色,您可以为该角色附加以下最低权限策略:

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

如果您的输入使用服务器端加密和 Amazon KMS托管密钥 (SSE-KMS) 进行加密,请添加以下权限:

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

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

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

如果您在 AutoML 作业的资源配置中指定音量KMS密钥,请添加以下权限:

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

CreateDomain API: 执行角色权限

当您在请求中传递 Amazon KMS 客户托管密钥时,具有 Ident IAM ity Center 的IAM域的执行角色和域的用户/执行角色需要以下权限。KmsKeyId CreateDomain API这些权限是在CreateAppAPI通话期间强制执行的。

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

{ "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 和 UpdateImageAPIs:执行角色权限

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

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

CreateNotebookInstance API: 执行角色权限

您向执行角色授予的调用权限CreateNotebookInstanceAPI取决于您计划对笔记本实例执行的操作。如果您计划在调用 SageMaker APIs和时使用它来调用和传递相同的角色 CreateModelAPIs,请将以下权限策略附加到该角色:CreateTrainingJob

{ "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: 执行角色权限

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

{ "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 和 Amazon CloudWatch Logs 资源ECR,而不必指定"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 或 RDS Amazon 资源,请向该策略添加相关权限。

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

  • 仅向您在 s3:ListBucket 请求中指定作为 InputDataConfig.DataSource.S3DataSource.S3Uri 的特定存储桶授予 CreateTrainingJob 权限。

  • 仅向您在 s3:GetObject 请求的输入和输出数据配置中指定的以下对象授予 s3:PutObjectCreateHyperParameterTuningJob 权限:

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • 将 Amazon ECR 权限范围限定为您在CreateHyperParameterTuningJob请求中指定的注册路径 (AlgorithmSpecification.TrainingImage)。

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

如果您的输入使用服务器端加密和 Amazon KMS托管密钥 (SSE-KMS) 进行加密,请添加以下权限:

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

如果您在超参数调整作业的输出配置中指定了KMS密钥,请添加以下权限:

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

如果您在超参数调整作业的资源配置中指定音量KMS密钥,请添加以下权限:

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

CreateProcessingJob API: 执行角色权限

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

{ "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 资源,而不必指定"Resource": "*"

{ "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 或 RDS Amazon 资源,请在此政策中添加相关权限。

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

  • 仅向您在 s3:ListBucket 请求中指定作为 ProcessingInputs 的特定存储桶授予 CreateProcessingJob 权限。

  • s3:GetObject s3:PutObject 权限的范围限定在 CreateProcessingJob 请求中要在 ProcessingInputsProcessingOutputConfig 中下载或上传的对象。

  • 将 Amazon ECR 权限范围限定为您在CreateProcessingJob请求中指定的注册路径 (AppSpecification.ImageUri)。

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

如果您的输入使用服务器端加密和 Amazon KMS托管密钥 (SSE-KMS) 进行加密,请添加以下权限:

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

如果您在处理任务的输出配置中指定KMS密钥,请添加以下权限:

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

如果您在处理任务的资源配置中指定音量KMS密钥,请添加以下权限:

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

CreateTrainingJob API: 执行角色权限

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

{ "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 资源,而不必指定"Resource": "*"

{ "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 或 RDS Amazon 资源,请在此政策中添加相关权限。

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

  • 仅向您在 s3:ListBucket 请求中指定作为 InputDataConfig.DataSource.S3DataSource.S3Uri 的特定存储桶授予 CreateTrainingJob 权限。

  • 仅向您在 s3:GetObject 请求的输入和输出数据配置中指定的以下对象授予 s3:PutObjectCreateTrainingJob 权限:

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • 将 Amazon ECR 权限范围限定为您在CreateTrainingJob请求中指定的注册路径 (AlgorithmSpecification.TrainingImage)。

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

如果您的输入使用服务器端加密和 Amazon KMS托管密钥 (SSE-KMS) 进行加密,请添加以下权限:

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

如果您在训练作业的输出配置中指定KMS密钥,请添加以下权限:

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

如果您在训练作业的资源配置中指定音量KMS密钥,请添加以下权限:

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

CreateModel API: 执行角色权限

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

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

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

{ "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需要访问其他数据源,例如亚马逊 DynamoDB 或RDS亚马逊资源,请在此政策中添加相关权限。

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

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

  • 将 Amazon ECR 权限范围限定到您在CreateModel请求SecondaryContainer.Image中指定为PrimaryContainer.Image和的特定注册路径。

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