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