本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用需要身份验证的 Docker 注册表进行训练
如果您的 Docker 注册表需要身份验证,则必须创建一个为其提供访问凭据 SageMaker的 Amazon Lambda
函数。然后,创建一个训练作业并在 create_training_job
创建 Lambda 函数
创建一个将访问凭证传递给 SageMaker 并返回响应的 Amazon Lambda 函数。以下代码示例创建 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 中使用的 iam Role 必须具有调用函数的权限。 Amazon Lambda 以下代码示例演示如何将扩展 IAM 角色的权限,使其能够调用 myLambdaFunction
。
{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*myLambdaFunction*" ] }
有关编辑角色权限策略的信息,请参阅《Amazon Identity and Access Management 用户指南》中的修改角色权限策略(控制台)。
注意
附加了AmazonSageMakerFullAccess托管策略的 IAM 角色有权调用名称中带有 “SageMaker” 的任何 Lambda 函数。
为 Lambda 创建接口 VPC 端点
通过创建接口端点,您的 Amazon VPC 可以与 Lambda 函数通信而无需通过互联网发送流量。有关更多信息,请参阅《Amazon Lambda 开发人员指南》中的为 Lambda 配置接口 VPC 终端节点。
创建接口终端节点后, SageMaker 培训将通过您的 VPC 向发送请求,从而调用您的 Lambda 函数。lambda.region.amazonaws.com
如果您在创建接口端点时选择启用 DNS 名称,则 Amazon Route 53 会将调用路由到 Lambda 接口端点。如果您使用不同的 DNS 提供商,则必须将 lambda.region.amazonaws.co
m 映射到您的 Lambda 接口端点。