本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用需要身份验证的 Docker 注册表进行训练
如果 Docker 注册表要求进行身份验证,则必须创建一个向 SageMaker AI 提供访问凭证的 Amazon Lambda 函数。然后,创建一个训练作业并在 create_training_job
创建 Lambda 函数
创建 Amazon Lambda 函数,将访问凭证传递给 SageMaker AI 并返回响应。以下代码示例创建 Lambda 函数处理程序,如下所示。
def handler(event, context): response = { "Credentials": {"Username": "username", "Password": "password"} } return response
设置私有 Docker 注册表所用的身份验证类型决定了您的 Lambda 函数返回的响应内容,如下所示。
-
如果您的私有 Docker 注册表使用基本身份验证,则 Lambda 函数将返回所需的用户名和密码,以便向注册表进行身份验证。
-
如果您的私有 Docker 注册表使用持有者令牌身份验证
,则用户名和密码发送到您的授权服务器,该服务器将返回一个持有者令牌。然后,此令牌用于对您的私有 Docker 注册表进行身份验证。
注意
如果您在同一个账户的注册表中有多个 Lambda 函数,并且您的训练作业的执行角色相同,则一个注册表的训练作业可以访问其他注册表的 Lambda 函数。
将正确的角色权限授予 Lambda 函数
您在 create_training_job API 中使用的 IAMrole 必须具有调用 Amazon Lambda 函数的权限。以下代码示例演示如何将扩展 IAM 角色的权限,使其能够调用 myLambdaFunction。
{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*myLambdaFunction*" ] }
有关编辑角色权限策略的信息,请参阅《Amazon Identity and Access Management 用户指南》中的修改角色权限策略(控制台)。
注意
附加了 AmazonSageMakerFullAccess 托管式策略的 IAM 角色有权调用名称中包含“SageMaker AI”的任意 Lambda 函数。
为 Lambda 创建接口 VPC 端点
通过创建接口端点,您的 Amazon VPC 可以与 Lambda 函数通信而无需通过互联网发送流量。有关更多信息,请参阅《Amazon Lambda 开发人员指南》中的为 Lambda 配置接口 VPC 终端节点。
创建接口端点后,SageMaker 训练通过 VPC 将请求发送到 lambda.region.amazonaws.com 来调用 Lambda 函数。如果您在创建接口端点时选择启用 DNS 名称,则 Amazon Route 53 会将调用路由到 Lambda 接口端点。如果您使用不同的 DNS 提供商,则必须将 lambda.region.amazonaws.com 映射到您的 Lambda 接口端点。