使用需要為訓練進行驗證的 Docker 登錄檔 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用需要為訓練進行驗證的 Docker 登錄檔

如果您的 Docker 登錄需要驗證,您必須建立提供存取認證的 AWS Lambda 函數。 SageMaker然後,建立訓練任務,並在 create_training_job API 內提供此 Lambda 函數的 ARN。最後,您可以選擇建立介面 VPC 端點,讓您的 VPC 可以與 Lambda 函數通訊,而不必透過網際網路傳送流量。以下指南說明如何建立 Lambda 函數、為其指派正確角色,以及建立介面 VPC 端點。

建立 Lambda 函數

建立傳遞存取認證 SageMaker 並傳回回應的 AWS 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 中使用的 IamRole 必須具有呼叫函數的權限。 AWS Lambda 下列程式碼範例示範如何將 IAM 角色的許可政策延伸以呼叫 myLambdaFunction

{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*myLambdaFunction*" ] }

如需如何編輯角色許可的詳細資訊,請參閱 身分和存取管理使用者指南AWS 內的修改角色許可政策 (主控台)

注意

具有附加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.com 對應至 Lambda 介面端點。