

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# トレーニングに認証が必要な Docker レジストリの使用
<a name="docker-containers-adapt-your-own-private-registry-authentication"></a>

Docker レジストリで認証が必要な場合は、SageMaker AI にアクセス認証情報を指定する AWS Lambda 関数を作成する必要があります。次に、トレーニングジョブを作成し、[create\$1training\$1job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job) API 内でこの Lambda 関数の ARN を指定します。最後に、VPC がインターネット経由でトラフィックを送信せずに Lambda 関数と通信できるように、オプションでインターフェイス VPC エンドポイントを作成できます。次のガイドでは、Lambda 関数を作成し、正しいロールを割り当て、インターフェイス VPC エンドポイントを作成する方法を示しています。

## Lambda 関数を作成する
<a name="docker-containers-adapt-your-own-private-registry-authentication-create-lambda"></a>

アクセス認証情報を SageMaker AI に渡し、レスポンスを返す AWS Lambda 関数を作成します。次のコード例では、次のように Lambda 関数ハンドラーを作成します。

```
def handler(event, context):
   response = {
      "Credentials": {"Username": "username", "Password": "password"}
   }
   return response
```

プライベート Docker レジストリの設定に使用される認証の種類によって、Lambda 関数から返されるレスポンスの内容が次のように決まります。
+ プライベート Docker レジストリが基本認証を使用する場合は、Lambda 関数はレジストリの認証に必要なユーザー名とパスワードを返します。
+ プライベート Docker レジストリが[ベアラートークン認証](https://docs.docker.com/registry/spec/auth/token/)を使用する場合は、ユーザー名とパスワードが認可サーバーに送信され、認可サーバーは、ベアラートークンが返します。その後、このトークンはプライベート Docker レジストリの認証に使用されます。

**注記**  
同じアカウントのレジストリに複数の Lambda 関数があり、トレーニングジョブの実行ロールが同じ場合、レジストリ 1 のトレーニングジョブは他のレジストリの Lambda 関数にアクセスできます。

## Lambda 関数への適切なロールのアクセス許可の付与
<a name="docker-containers-adapt-your-own-private-registry-authentication-lambda-role"></a>

`create_training_job` API で使用する [IAMrole](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)には、 AWS Lambda 関数を呼び出すアクセス許可が必要です。次のコード例は、IAM ロールのアクセス許可ポリシーを拡張して、`myLambdaFunction` を呼び出す方法を示しています。

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

ロールのアクセス許可ポリシーの編集の詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[ロールのアクセス許可ポリシーの変更 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)」を参照してください。

**注記**  
**AmazonSageMakerFullAccess** 管理ポリシーがアタッチされている IAM ロールには、名前に「SageMaker AI」を含む任意の Lambda 関数を呼び出すアクセス許可があります。

## Lambda のインターフェイス VPC エンドポイントを作成する
<a name="docker-containers-adapt-your-own-private-registry-authentication-lambda-endpoint"></a>

インターフェイスエンドポイントを作成すると、Amazon VPC がインターネット経由でトラフィックを送信せずに Lambda 関数と通信できます。詳細については、*AWS Lambda デベロッパーガイド*の「[Lambda のインターフェイス VPC エンドポイントの設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html)」を参照してください。

インターフェースエンドポイントが作成されると、SageMaker トレーニングは VPC 経由で `lambda.region.amazonaws.com` にリクエストを送信して Lambda 関数を呼び出します。インターフェイスエンドポイントの作成時に **DNS 名の有効化**を選択した場合、Amazon Route 53 は呼び出しを Lambda インターフェイスエンドポイントにルーティングします。別の DNS プロバイダーを使用する場合は、`lambda.region.amazonaws.co`m を Lambda インターフェイスエンドポイントにマッピングする必要があります。