SSM 経由でコンテナにアクセスする - Amazon SageMaker

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

SSM 経由でコンテナにアクセスする

Amazon SageMaker では、 AWS Systems Manager (SSM) を使用して、推論のためにモデルがデプロイされている Docker コンテナに安全に接続できます。これにより、コンテナへのシェルレベルのアクセスが可能になり、コンテナ内で実行されているプロセスをデバッグし、Amazon でコマンドとレスポンスをログに記録できます CloudWatch。SSM 経由でコンテナにプライベートにアクセスするためにコンテナをホストする ML インスタンスへの AWS PrivateLink 接続を設定することもできます。

警告

SSM アクセスを有効にすると、エンドポイントのパフォーマンスに影響することがあります。この機能は、本番環境のエンドポイントではなく、開発用またはテスト用のエンドポイントで使用することをお勧めします。また、 はセキュリティパッチ SageMaker を自動的に適用し、問題のあるエンドポイントインスタンスを 10 分以内に置換または終了します。ただし、SSM が有効な本番稼働用バリアントを持つエンドポイントの場合、 は、問題のあるエンドポイントインスタンスのセキュリティパッチ適用と置き換えまたは終了を 1 日ずつ SageMaker 遅らせて、デバッグできるようにします。

次のセクションでは、この機能の使用方法について詳しく説明します。

許可リスト

この機能を使用するには、カスタマーサポートに連絡し、アカウントを許可リストに登録する必要があります。アカウントが SSM アクセスの許可リストに登録されていない場合、SSM アクセスが有効なエンドポイントを作成することはできません。

SSM アクセスを有効にする

エンドポイントの既存コンテナへの SSM アクセスを有効にするには、EnableSSMAccess パラメータを true に設定した新しいエンドポイント設定でエンドポイントを更新します。次の例は、エンドポイント設定のサンプルを示しています。

{ "EndpointConfigName": "endpoint-config-name", "ProductionVariants": [ { "InitialInstanceCount": 1, "InitialVariantWeight": 1.0, "InstanceType": "ml.t2.medium", "ModelName": model-name, "VariantName": variant-name, "EnableSSMAccess": true, }, ] }

SSM アクセスを有効にする方法の詳細については、「EnableSSMAccess」を参照してください。

IAM の設定

エンドポイントの IAM アクセス権限

エンドポイントインスタンスの SSM アクセスを有効にしている場合、 はエンドポイントインスタンス SageMaker を開始するときに SSM エージェントを起動および管理します。SSM エージェントが SSM サービスと通信できるようにするには、エンドポイントが実行される実行ロールに次のポリシーを追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }

ユーザーの IAM アクセス許可

次のポリシーを追加して、IAM ユーザーに SSM ターゲットに接続するための SSM セッションアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }

次のポリシーを使用して、IAM ユーザーが接続できるエンドポイントを制限できます。イタリック体のプレースホルダーテキストを独自の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", ], "Resource": [ "sagemaker-endpoint-arn" ] } ] }

エンドポイントがパブリックインターネットに接続されていない Virtual Private Cloud (VPC) 内で実行されている場合、 AWS PrivateLink を使用して、エンドポイントインスタンス、SSM、および Amazon EC2 間のすべてのネットワークトラフィックを Amazon ネットワーク AWS PrivateLink に制限できます。 AWS PrivateLinkで SSM アクセスを設定する方法の詳細については、「Session Manager の VPC エンドポイントを設定する」を参照してください。

Amazon CloudWatch Logs でのログ記録

SSM アクセスが有効なエンドポイントの場合、Amazon CloudWatch Logs を使用して SSM エージェントからエラーをログに記録できます。 CloudWatch Logs でエラーを記録する方法の詳細については、「セッションアクティビティのログ記録」を参照してください。ログは、エンドポイントロググループ /aws/sagemaker/endpoints/endpoint-name 下の SSM ログストリーム variant-name/ec2-instance-id/ssm にあります。ログの表示方法の詳細については、「ログに送信された CloudWatch ログデータの表示」を参照してください。

エンドポイントの背後にある本番稼働用バリアントには、複数のモデルコンテナを含めることができます。各モデルコンテナのログはログストリームに記録されます。各ログの先頭には [sagemaker ssm logs][container-name] が付きます。ここで、container-name はコンテナに付けた名前か、container_0container_1 などのデフォルトの名前です。

モデルコンテナへのアクセス

エンドポイントインスタンスのモデルコンテナにアクセスするには、ターゲット ID が必要です。ターゲット ID は次のいずれかの形式です。

  • sagemaker-endpoint:endpoint-name_variant-name_ec2-instance-id 単一コンテナエンドポイントのコンテナ用

  • sagemaker-endpoint:endpoint-name_variant-name_ec2-instance-id_container-name マルチコンテナエンドポイントのコンテナ用

次の例は、 を使用して AWS CLI 、ターゲット ID を使用してモデルコンテナにアクセスする方法を示しています。

aws ssm start-session --target sagemaker-endpoint:prod-image-classifier_variant1_i-003a121c1b21a90a9_container_1

Amazon CloudWatch Logs でのログ記録 で述べているようにログ記録を有効にすると、SSM ログストリームの最初にリストされているすべてのコンテナのターゲット ID を確認できます。

注記
  • SSM MarketPlace を使用して、1P アルゴリズムコンテナや から SageMaker取得したモデルのコンテナに接続することはできません。ただし、 AWS が提供する深層学習コンテナ (DLC) や、所有する任意のカスタムコンテナには接続できます。

  • モデルコンテナのネットワーク分離を有効にして、アウトバウンドのネットワーク呼び出しを行えないようにしている場合、そのコンテナの SSM セッションを開始することはできません。

  • 1 つの SSM セッションから 1 つのコンテナにのみアクセスできます。同じエンドポイントの背後にあるコンテナであっても、別のコンテナにアクセスするには、そのエンドポイントのターゲット ID を使用して新しい SSM セッションを開始します。