本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
如何使用 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
只授予执行角色对名称中包含 SageMaker
、Sagemaker
、sagemaker
或 aws-glue
的存储桶或对象执行特定 Amazon S3 操作的权限。要了解如何为执行角色添加附加策略,以授予其访问其他 Amazon S3 存储桶和对象的权限,请参阅向 A SageMaker I 执行角色添加其他 Amazon S3 权限。
注意
创建 A SageMaker I 域或笔记本实例时,您可以直接创建执行角色。
-
有关如何创建 A SageMaker I 域的信息,请参阅亚马逊 A SageMaker I 入门指南。
-
有关如何创建笔记本实例的信息,请参阅为本教程创建 Amazon SageMaker 笔记本实例。
从 SageMaker AI 控制台创建新的执行角色
使用 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
选择 Role (角色),然后选择 Create role (创建角色)。
-
将AWS 服务保留为可信实体类型,然后使用向下箭头在其他 AWS 服务的用例中查找 SageMaker AI。
-
选择 SageMaker AI-执行,然后选择下一步。
-
IAM 托管策略
AmazonSageMakerFullAccess
会自动附加到角色。要查看此策略中包含的权限,请选择策略名称旁边的加号 (+)。选择下一步。 -
输入角色名称和描述。
-
(可选)向角色添加其他权限和标签。
-
选择 Create role(创建角色)。
-
在 IAM 控制台的角色部分中,找到刚刚创建的角色。如果需要,请通过文本框使用角色名称搜索角色。
-
在角色摘要页面上,记下 ARN。
从 AWS CLI创建新的执行角色
在使用创建执行角色之前 AWS CLI,请务必按照中的说明对其进行更新和配置(可选)配置 AWS CLI,然后继续按照中的说明进行操作使用自定义设置 AWS CLI。
创建执行角色后,可以将其与 SageMaker AI 域、用户配置文件或 Jupyter 笔记本实例相关联。
您也可以将执行角色的 ARN 传递给 API 调用。例如,使用 Amaz SageMaker on Python 软件开发工具包
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
附加到一个执行角色,则该角色有权对名称中包含 SageMaker
、Sagemaker
、sagemaker
或 aws-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 SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/
-
在左侧导航窗格中,选择管理员配置下的域。
-
选择与您的域相对应的链接。
-
选择域设置选项卡。
-
在常规设置部分,执行角色 ARN 列在执行角色下。
执行角色名称位于执行角色 ARN 中最后一个
/
之后。
获取空间执行角色
下面提供了查找空间执行角色的说明。
查找与您的空间相关的执行角色
-
打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/
-
在左侧导航窗格中,选择管理员配置下的域。
-
选择与您的域相对应的链接。
-
选择空间管理选项卡。
-
在详情部分,执行角色 ARN 列在执行角色下。
执行角色名称位于执行角色 ARN 中最后一个
/
之后。
注意
以下代码旨在在 SageMaker AI 环境中运行,就像 Amazon SageMaker Studio IDEs 中的任何代码一样。如果您在 SageMaker AI 环境get_execution_role
之外运行,则会收到错误消息。
以下 get_execution_role
from sagemaker import get_execution_role role = get_execution_role() print(role)
执行角色名称位于执行角色 ARN 中最后一个 /
之后。
获取用户执行角色
下面提供了查找用户执行角色的说明。
查找用户的执行角色
-
打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/
-
在左侧导航窗格中,选择管理员配置下的域。
-
选择与您的域相对应的链接。
-
选择用户配置文件选项卡。
-
选择与用户对应的链接。
-
在详情部分,执行角色 ARN 列在执行角色下。
执行角色名称位于执行角色 ARN 中最后一个
/
之后。
注意
要使用以下示例,必须安装并配置 AWS Command Line Interface (AWS CLI)。有关信息,请参阅版本 2 AWS Command Line Interface 用户指南中的AWS CLI入门。
以下 get-caller-identity
aws sts get-caller-identity
执行角色名称位于执行角色 ARN 中最后一个 /
之后。
更改您的执行角色
执行角色是 A SageMaker I 身份(例如 A SageMaker I 用户、空间或域)担任的 IAM 角色。更改 IAM 角色会更改承担该角色的所有身份的权限。
更改执行角色后,相应空间的执行角色也会随之更改。变化的影响可能需要一些时间来传播。
-
更改用户的执行角色后,由该用户创建的专用空间将承担更改后的执行角色。
-
更改空间的默认执行角色后,域中的共享空间将承担更改后的执行角色。
有关执行角色和空间的更多信息,请参阅 了解域空间权限和执行角色。
您可以使用以下指令之一将身份的执行角色更改为不同的 IAM 角色。
如果您想修改某个身份所承担的角色,请参阅 修改执行角色(管理控制台)的权限。
更改域默认执行角色
下面提供了更改域默认执行角色的说明。
更改域的默认执行角色
-
打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/
-
在左侧导航窗格中,选择管理员配置下的域。
-
选择与您的域相对应的链接。
-
选择域设置选项卡。
-
在常规设置部分,选择编辑。
-
在权限部分,在默认执行角色下展开下拉列表。
-
在下拉列表中,您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。
如果要创建新角色,可以选择创建角色向导选项。
-
在以下步骤中选择下一步,并在最后一步选择提交。
更改空间默认执行角色
下面提供了更改空间默认执行角色的说明。更改此执行角色将改变域中所有共享空间所承担的角色。
创建新空间时更改空间默认执行角色
-
打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/
-
在左侧导航窗格中,选择管理员配置下的域。
-
选择与您的域相对应的链接。
-
选择域设置选项卡。
-
在常规设置部分,选择编辑。
-
在权限部分,在空间默认执行角色下展开下拉列表。
-
在下拉列表中,您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。
如果要创建新角色,可以选择创建角色向导选项。
-
在以下步骤中选择下一步,并在最后一步选择提交。
更改用户配置文件执行角色
下面提供了更改用户执行角色的说明。更改此执行角色将改变该用户创建的所有专用空间所承担的角色。
更改用户的执行角色
-
打开 A SageMaker I 控制台,https://console.aws.amazon.com/sagemaker/
-
在左侧导航窗格中,选择管理员配置下的域。
-
选择与您的域相对应的链接。
-
选择用户配置文件选项卡。
-
选择与用户配置文件名称相对应的链接。
-
选择编辑。
-
在下拉列表中,您可以选择现有角色、输入自定义 IAM 角色 ARN 或创建新角色。
如果要创建新角色,可以选择创建角色向导选项。
-
在以下步骤中选择下一步,并在最后一步选择提交。
修改执行角色(管理控制台)的权限
您可以修改身份(例如 SageMaker AI 用户、空间或域)执行角色的现有权限。具体做法是找到身份所承担的适当 IAM 角色,然后修改该 IAM 角色。下面将说明如何通过管理控制台实现这一功能。
修改执行角色后,相应空间的执行角色也会随之改变。变化的影响可能不会立竿见影。
-
修改用户的执行角色后,由该用户创建的专用空间将承担修改后的执行角色。
-
修改空间的默认执行角色后,域中的共享空间将承担修改后的执行角色。
有关执行角色和空间的更多信息,请参阅 了解域空间权限和执行角色。
如果您想更改某个身份所承担的角色,请参阅 更改您的执行角色。
传递角色
诸如在服务之间传递角色之类的操作是 A SageMaker I 中的常见功能。您可以在服务授权参考中找到有关 SageMaker AI 的操作、资源和条件密钥的更多详细信息。
在调用这些 API 时,您需要传递角色 (iam:PassRole
):CreateAutoMLJob
、CreateCompilationJob
、CreateDomain
、CreateFeatureGroup
、CreateFlowDefiniton
、CreateHyperParameterTuningJob
、CreateImage
、CreateLabelingJob
、CreateModel
、CreateMonitoringSchedule
、CreateNotebookInstance
、CreateProcessingJob
、CreateTrainingJob
、CreateUserProfile
、RenderUiTemplate
、UpdateImage
以及 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。如果您更愿意创建自定义策略和管理权限以将权限限定于您需要使用执行角色执行的操作,请参阅以下主题。
重要
如果您遇到问题,请参阅 对 Amazon SageMaker AI 身份和访问进行故障排除。
有关 IAM 角色的更多信息,请参阅服务授权参考中的 IAM 角色。
主题
CreateAutoMLJob 和 CreateAuto MLJob V2 API:执行角色权限
对于可以在 CreateAutoMLJob
或 CreateAutoMLJobV2
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:执行角色权限
对于可在 CreateImage
或 UpdateImage
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: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": "*" } ] }
您可以将这些权限的范围限定为特定的 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:PutObject
和CreateHyperParameterTuningJob
权限: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
请求中要在ProcessingInputs
和ProcessingOutputConfig
中下载或上传的对象。 -
仅向您在
CreateProcessingJob
请求中指定的注册表路径 (AppSpecification.ImageUri
) 授予 Amazon ECR 权限。
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) 进行加密,请添加以下权限:
{ "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
-
仅向您在
CreateTrainingJob
请求中指定的注册表路径 (AlgorithmSpecification.TrainingImage
) 授予 Amazon ECR 权限。
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) 进行加密,请添加以下权限:
{ "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.Image
和SecondaryContainer.Image
的特定注册表路径授予 Amazon ECR 权限。
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" ] }