翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
リアルタイム推論コンテナにプライベート Docker レジストリを使用する
Amazon SageMaker ホスティングでは、Amazon ECR に保存されているイメージを使用して、デフォルトでリアルタイム推論用のコンテナを構築できます。オプションで、プライベート Docker レジストリ内のイメージからリアルタイム推論用のコンテナを構築できます。プライベートレジストリは、アカウント内の Amazon VPC からアクセスできることが必要です。プライベート Docker レジストリに格納されているイメージに基づいて作成するモデルは、プライベート Docker レジストリがアクセスできる同じ VPC に接続するように設定する必要があります。モデルの VPC への接続の詳細については、「Amazon のリソースへのアクセスを SageMaker ホストエンドポイントに許可する VPC」を参照してください。
Docker レジストリは、既知の公開認証機関 (CA) からの TLS 証明書で保護されている必要があります。
注記
プライベート Docker レジストリは、 SageMaker ホスティングがレジストリからモデルイメージをプルできるように、モデルの VPC 設定で指定したセキュリティグループからのインバウンドトラフィックを許可する必要があります。
SageMaker は、VPC 内にオープンインターネットへのパス DockerHub がある場合、 からモデルイメージをプルできます。
トピック
Amazon Elastic コンテナレジストリ以外のプライベート Docker レジストリにイメージを保存する
プライベート Docker レジストリを使用してイメージを SageMaker リアルタイム推論用に保存するには、Amazon VPC からアクセスできるプライベートレジストリを作成します。Docker レジストリの作成の詳細については、Docker ドキュメントの「レジストリサーバーをデプロイする
-
レジストリは Docker Registry HTTP API V2
レジストリであることが必要です。 -
Docker レジストリは、モデルの作成時に指定する
VpcConfig
パラメータで指定する同じ VPC からアクセスできる必要があります。
リアルタイム推論にプライベート Docker レジストリのイメージを使用する
モデルを作成して SageMaker ホスティングにデプロイするときに、プライベート Docker レジストリのイメージを使用して推論コンテナを構築するように指定できます。create_modelPrimaryContainer
パラメータの ImageConfig
オブジェクトでこれを指定します。
プライベート Docker レジストリに保存されているイメージを推論コンテナに使用するには
-
イメージ設定オブジェクトを作成し、
RepositoryAccessMode
フィールドにVpc
の値を指定します。image_config = { 'RepositoryAccessMode': 'Vpc' }
-
プライベートの Docker レジストリに認証が必要な場合は、
RepositoryAuthConfig
オブジェクトを、イメージ設定オブジェクトに追加します。RepositoryAuthConfig
オブジェクトのRepositoryCredentialsProviderArn
フィールドで、 がプライベート Docker レジストリ SageMaker に対して認証できるようにする 認証情報を提供する AWS Lambda 関数の Amazon リソースネーム (ARN) を指定します。認証を提供するために Lambda 関数を作成する方法については、「 SageMaker プライベート Docker レジストリへの認証を に許可する」を参照してください。image_config = { 'RepositoryAccessMode': 'Vpc', 'RepositoryAuthConfig': { 'RepositoryCredentialsProviderArn': 'arn:aws:lambda:
Region
:Acct
:function:FunctionName
' } } -
前のステップで作成したイメージ設定オブジェクトを使用し、
create_model
に渡すプライマリコンテナオブジェクトを作成します。ダイジェスト
フォームでイメージを提供します。 :latest
タグを使用してイメージを指定すると、 が意図したよりも新しいバージョンのイメージを SageMaker プルするリスクがあります。ダイジェストフォームを使用すると、 は意図したイメージバージョンを確実に SageMaker プルします。primary_container = { 'ContainerHostname': 'ModelContainer', 'Image': 'myteam.myorg.com/docker-local/my-inference-image:
<IMAGE-TAG>
', 'ImageConfig': image_config } -
create_model
に渡すモデル名と実行ロールを指定します。model_name = 'vpc-model' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
-
1 つ以上のセキュリティグループとサブネットをモデルの VPC 設定に指定します。プライベート Docker レジストリは、指定したセキュリティグループからのインバウンドトラフィックを許可する必要があります。指定するサブネットは、プライベート Docker レジストリと同じ VPC 内にある必要があります。
vpc_config = { 'SecurityGroupIds': ['sg-0123456789abcdef0'], 'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1'] }
-
Boto3 SageMaker クライアントを取得します。
import boto3 sm = boto3.client('sagemaker')
-
PrimaryContainer
およびVpcConfig
パラメータに前の手順で指定した値を使用してcreate_model
を呼び出し、モデルを作成します。try: resp = sm.create_model( ModelName=model_name, PrimaryContainer=primary_container, ExecutionRoleArn=execution_role_arn, VpcConfig=vpc_config, ) except Exception as e: print(f'error calling CreateModel operation: {e}') else: print(resp)
-
最後に、前のステップで作成したモデルを使用し、create_endpoint_config
および create_endpoint を呼び出してホスティングエンドポイントを作成します。 endpoint_config_name = 'my-endpoint-config' sm.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { 'VariantName': 'MyVariant', 'ModelName': model_name, 'InitialInstanceCount': 1, 'InstanceType': 'ml.t2.medium' }, ], ) endpoint_name = 'my-endpoint' sm.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name, ) sm.describe_endpoint(EndpointName=endpoint_name)
SageMaker プライベート Docker レジストリへの認証を に許可する
認証が必要なプライベート Docker レジストリから推論イメージをプルするには、認証情報を提供する AWS Lambda 関数を作成し、create_modelcreate_model
、指定した Lambda 関数を呼び出して、Docker レジストリに対して認証するための認証情報を取得します。
Lambda 関数を作成する
次の形式でレスポンスを返す AWS Lambda 関数を作成します。
def handler(event, context): response = { "Credentials": {"Username": "
username
", "Password": "password
"} } return response
プライベート Docker レジストリの認証の設定方法に応じて、Lambda 関数が返す認証情報は、次のいずれかを意味する可能性があります。
-
基本認証を使用するようにプライベート Docker レジストリを設定した場合、レジストリに対して認証するためのサインイン認証情報を提供します。
-
ベアラトークン認証を使用するようにプライベート Docker レジストリを設定すると、サインイン認証情報が認証サーバーに送信され、ベアラトークンが返され、これをプライベートの Docker レジストリへの認証に使用できます。
実行ロールに Lambda へのアクセス許可を付与する
の呼び出しに使用する実行ロールには、 AWS Lambda 関数を呼び出すアクセス許可create_model
が必要です。実行ロールのアクセス許可ポリシーに以下を追加します。
{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*
myLambdaFunction
*" ] }
ここで、 myLambdaFunctionは Lambda 関数の名前です。ロールのアクセス許可ポリシーの編集の詳細については、AWS Identity and Access Management ユーザーガイドの「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。
注記
AmazonSageMakerFullAccess
マネージドポリシー がアタッチされた実行ロールには、名前SageMakerに が含まれる Lambda 関数を呼び出すアクセス許可があります。
Lambda のインターフェイス VPC エンドポイントを作成する
Amazon VPC がインターネット経由でトラフィックを送信せずに AWS Lambda 関数と通信できるようにインターフェイスエンドポイントを作成します。詳細については、AWS Lambda デベロッパーガイドの「Lambda のインターフェイス VPC エンドポイントの設定」を参照してください。
SageMaker ホスティングは、VPC 経由で にリクエストを送信しlambda.
、Lambda 関数を呼び出します。インターフェイスエンドポイントの作成時にプライベート DNS 名を選択すると、Amazon Route 53 は呼び出しを Lambda インターフェイスエンドポイントにルーティングします。別の DNS プロバイダーを使用する場合は、必ず region
.amazonaws.com.rproxy.goskope.comlambda.
を Lambda インターフェイスエンドポイントに対応付けてください。region
.amazonaws.com