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