上次更新时间:2020 年 7 月 14 日
我正在培训 AWS 账户中的 Amazon SageMaker 模型。如何将此模型部署到其他 AWS 账户中的终端节点?
解决方法 账户 A(沙盒账户)1.创建 AWS Key Management Service (AWS KMS) 客户主密钥 (CMK)。在定义密钥使用权限页面的其他 AWS 账户部分中,选择添加其他 AWS 账户。然后,输入账户 B 的 AWS 账号(您想要将部模型部署至其中的账户)。
您将使用此 CMK 进行 Amazon SageMaker 培训作业。如果您没有为培训作业指定 CMK,那么 Amazon SageMaker 将默认使用 Amazon Simple Storage Service (Amazon S3) 服务器端加密密钥。默认的 Amazon S3 服务器端加密密钥无法与其他 AWS 账户共享或由其他 AWS 账户使用。
2.如果没有培训作业,请先创建培训作业。在 Estimator 类中,添加您在上一步中创建的 CMK。示例:
linear = sagemaker.estimator.Estimator(
…
output_kms_key='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
…
)
账户 B(部署账户)
1.创建两个 AWS Identity and Access Management (IAM) 策略,类似于以下内容。这两种策略为内联策略,这意味着它们会嵌入到 IAM 身份(用户、组或角色)中。
内联策略 1:允许角色访问账户 A(含有模型构件)中的 Amazon S3 资源。将 awsdoc-example-bucket 替换为存储培训作业输出的 S3 存储桶的名称。
{
"Version": "2012-10-17",
"Statement":
}
内联策略 2:允许您稍后将会创建的角色使用账户 A 中的 CMK。对于资源,指定账户 A 的账户 ID 和 CMK ID。
{
"Version": "2012-10-17",
"Statement": ,
"Resource":
}
]
}
2.为 Amazon SageMaker 创建 IAM 角色。 该角色附加了 AmazonSageMakerFullAccess 策略。
3.将您在步骤 1 中创建的两个内联策略附加到在步骤 2 中创建的角色。该角色应具有三个策略:AmazonSageMakerFullAccess,以及两个内联策略。
账户 A(沙盒账户)为存储培训作业输出的存储桶创建 S3 存储桶策略。此存储桶策略允许您在上一部分中创建的角色访问模型构件。替换下例中的如下值:
AccountB:部署账户的 AWS 账户 ID AmazonsageMaker:您在部署账户中创建的角色的名称 awsdoc-example-bucket:存储培训作业输出的 S3 存储桶
{
"Version": "2012-10-17",
"Statement":
}
账户 B(部署账户)
创建部署模型:
1.打开 Amazon SageMaker 控制台。
2.在导航窗格中,选择推理下的模型。
3.选择创建模型,然后输入以下内容:IAM 角色:选择自定义 IAM 角色 ARN。对于 YourAccountID,输入账户 B 的 ID。对于 YourRole,输入您在账户 B 中创建的 IAM 角色的名称。推理代码图像的位置:提供推理代码图像存储在 Amazon Elastic Container Registry (Amazon ECR) 中的注册表路径。模型构件的位置:提供模型构件存储在 Amazon S3 中的 URL。
4.在页面的底部,选择创建模型。有关创建模型的更多信息,请参阅创建管道模型。
创建终端节点配置:
1.打开 Amazon SageMaker 控制台。
2.在导航窗格中,选择推理下的终端节点配置。
3.选择创建终端节点配置。然后,在生产变体下,添加您在上一部分中创建的模型。
4.选择创建终端节点配置。
创建终端节点:
1.打开 Amazon SageMaker 控制台。
2.在导航窗格中,选择推理下的终端节点。
3.选择创建终端节点,然后选择您在上一部分中创建的终端节点配置。
4.选择创建终端节点。
现在,您可以从账户 A 部署模型到账户 B。