VPC 専用モードで Amazon SageMaker Studio ノートブックが KernelGateway アプリケーションに接続しないのはなぜですか。
VPC 専用モードで Amazon SageMaker Studio ノートブックと KernelGateway アプリケーションとの接続に問題があります。
簡単な説明
SageMaker Studio を VPC 専用モードで使用していて、KernelGateway アプリケーションを起動できない場合、次のエラーが表示されることがあります。
SageMaker Studio を起動することはできますが、Kernel が次のエラーで失敗します。
SageMaker Studio is unable to connect KernelGateway App. In VPCOnly mode, please ensure that security groups allow TCP traffic within the security group
このエラーは主に、セキュリティグループが SageMaker Domain 内のインスタンス間の接続を許可する自己参照型ではないことが原因で発生します。
SageMaker Studio を起動できるものの、読み込みに時間がかかり、Kernel が起動に失敗するとします。
Failed to start kernel Failed to launch app [None]. SageMaker Studio is unable to reach SageMaker endpoint. Please ensure your VPC has connectivity to SageMaker via Internet or VPC Endpoint. If you are using VPC Endpoints, please ensure Security Groups allows traffic between Studio and VPC endpoints.
このエラーは、VPC 専用のドメインがインターネットまたは Amazon Virtual Private Cloud (Amazon VPC) エンドポイントに接続できない場合に発生します。これには、次のようないくつかの理由が考えられます。
- セキュリティグループが正しく設定されていない。
- サブネットに正しい VPC エンドポイントがありません。
- ドメインはプライベートサブネットに接続されており、アクティブな NAT ゲートウェイはルートテーブルに追加されていません。
- パブリックサブネットに接続するように SageMaker Studio をセットアップしました。
解決方法
SageMaker Studio のセキュリティグループに必要なルールが含まれていることを確認します
ドメインと Amazon Elastic File System (Amazon EFS) ボリューム間の AWS ネットワークファイルシステム (AWS NFS) トラフィックが、ポート 2049 に TCP 経由で許可されていることを確認します。SageMaker Studio のデータは Amazon EFS を使用して保存されます。そのため、ストレージ目的でインバウンド接続とアウトバウンド接続を許可するルールが必要です。
Amazon EFS からリソースへのインバウンドトラフィックを許可するには、次の操作を行います。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、[セキュリティグループ] を選択します。
- 更新するセキュリティグループを選択します。
- [アクション] を選択してから、[インバウンドルールの編集] を選択します。
- [ルールの追加] を選択し、以下の操作を行います。
[Type] (タイプ) で、[NFS] を選択します。
[Source] (送信元) で、[Custom] (カスタム) を選択し、Amazon EFS ID を入力します。 - [ルールを保存] を選択します。
JupyterServer アプリケーションと KernelGateway アプリケーション間の接続を許可するには、セキュリティグループ内の TCP トラフィックを許可する必要があります。Studio ドメインを VPC 専用モードで作成したため、SageMaker Studio ドメインリソースに少なくとも 1 つのセキュリティグループを指定する必要があります。このセキュリティグループでは、ポート 8192-65535 で TCP 経由のインバウンドトラフィックを許可し、0.0.0.0/0 へのすべてのアウトバウンドトラフィックを許可する必要があります。
JupyterServer アプリとKernelGatewayアプリ間の接続を許可するには、次の操作を行います。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、[セキュリティグループ] を選択します。
- 更新するセキュリティグループを選択します。
- [アクション] を選択してから、[インバウンドルールの編集] を選択します。
- [ルールの追加] を選択し、以下の操作を行います。
[Type] で、[Custom TCP] を選択します。
[ポート範囲] に 8192-65535 と入力します。
[Source] (送信元) で、[Custom] (カスタム) を選択し、編集するセキュリティグループのセキュリティグループ ID を入力します。 - [Save rules] (ルールを保存する) を選択します。
SageMaker Studio ノートブックから Amazon Virtual Private Cloud (Amazon VPC) のリソースにアクセスすると、SageMaker サービスアカウントからのトラフィックは、Elastic Network Interface を介してルーティングされます。JupyterServer アプリケーションと KernelGateway アプリケーションはどちらも SageMaker サービスアカウント VPC 内にあることに注意してください。VPC にアタッチした Elastic Network Interface を介して相互に通信します。これらのアプリケーションは SageMaker Studio ドメインサービスアカウントの一部ですが、異なる Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行されます。これらのアプリケーションは、相互への接続を確立するためにエフェメラルポートを使用します。これらのアプリケーションが接続する特定のポートはありません。したがって、自己参照型のセキュリティグループでは、すべての TCP ポートを開いておくのがベストプラクティスです。詳細については、「Amazon SageMaker Studio Notebooks のアーキテクチャの徹底解説」を参照してください。
必要な VPC エンドポイントを作成したことを確認します
SageMaker Studio のリソースがインターネットへのアクセスを必要としない場合は、NAT ゲートウェイを追加する必要はありません。ただし、Studioノートブックを実行するには以下のエンドポイントが必要です。
- SageMaker API: com.amazonaws.<aws-region>.sagemaker.api
- SageMaker runtime: com.amazonaws.<aws-region>.sagemaker.runtime
Amazon Simple Storage Service (Amazon S3) とプロジェクトテンプレートにアクセスするには、必ず次のエンドポイントを作成してください。
- Amazon S3 の場合: com.amazonaws.<aws-region>.s3
- Amazon SageMaker プロジェクトテンプレートの場合: com.amazonaws.<aws-region>.servicecatalog
次の手順を実行して、必ず VPC のセキュリティグループをこれらの VPC エンドポイントに関連付けます。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインから [Endpoints] (エンドポイント) を選択します。
- 更新するエンドポイントを選択します。
- [Actions] (アクション) を選択してから、[Manage security groups] (セキュリティグループを管理) を選択します。
- このエンドポイントに関連付ける必要のあるセキュリティグループを選択します。
- [Save] (保存) を選択します。
詳細については、次を参照してください。
インターネット接続が必要な場合は、必ず NAT ゲートウェイを使用します
SageMaker Studio リソースにインターネットへのアクセスが必要な場合は、まず SageMaker Studio がプライベートサブネットに接続するように設定されていることを確認してください。次に、NAT ゲートウェイからのトラフィックがプライベートサブネットのルートテーブルを通過することを許可します。詳細については、「Amazon VPC でプライベートサブネット用の NAT ゲートウェイをセットアップするにはどうすればよいですか?」を参照してください。 パブリックサブネットに接続されている SageMaker Studio ドメインではインターネットに接続できないことに注意してください。
VPC のネットワーク要件が満たされていることを確認します
SageMaker Studio を VPC 専用モードで起動した場合は、VPC が以下の要件を満たしていることを確認します。
- サブネットには、インスタンスに使用できる十分な IP アドレスが必要。
- インターネットアクセスを許可するには、ドメイン作成時に必ず SageMaker ドメインをプライベートサブネットに関連付ける。また、インターネットアクセスには NAT ゲートウェイを使用する。
- SageMaker API の実行に VPC エンドポイントを使用している場合は、VPC の [DNS ホスト名を有効にする] と [DNS サポートを有効にする] の属性が true に設定されていることを確認する。これは、Kernel の起動時に VPC が SageMaker API エンドポイントに接続するために必要。
AWS コマンドラインインターフェイス (AWS CLI) コマンドを使用して、正しいセキュリティグループがドメインにアタッチされていることを確認できます。Studio ドメインの DefaultUserSettings を更新して新しいセキュリティグループを使用するには、update-domain コマンドを使います。
aws sagemaker update-domain –domain-id <value> --default-user-settings SecurityGroups=<list>
必要なセキュリティグループにアタッチされているドメインを再作成して、ドメインを再構成することもできます。SecurityGroups パラメータへの出力には、Studio が通信に使用する VPC のセキュリティグループすべてが一覧表示されます。
注: 上記のコマンドを実行するには、ユーザープロファイルから InService ステータスのアプリケーションをすべて削除する必要があります。
update-domain コマンドが成功したら、describe-domain コマンドを使用してドメインを確認できます。
例:
$ aws sagemaker describe-domain --domain-id d-xyzxyz
その後、SageMaker Studio を再度起動して、ノートブックが正常に起動していることを確認できます。ノートブックのセル内から !curl amazon.com を実行して、インターネット接続をテストすることもできます。
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
JupyterServer アプリケーションを削除し、新しいアプリケーションを起動して更新した設定を有効にします。Amazon VPC の設定を更新した後は、SageMaker Studio のユーザープロファイルを使用できます。詳細については、VPC 内の SageMaker Studio ノートブックを外部リソースに接続するのVPC 専用モードを使用するための要件セクションを参照してください。
その他の考慮事項
この問題が発生したユーザーが 1 人だけの場合は、VPC の更新が完了する前にデフォルトアプリが起動されたかどうかを確認してください。この場合、デフォルトの JupyterServer アプリは、新しい VPC 構成を利用するように自動的に更新されないため、接続の問題が発生します。また、デフォルトの JupyterServer アプリが数週間または数か月前に起動されたかどうかを確認してください。その結果、アプリのログファイルと一時ファイルが大きくなる可能性があります。デフォルトアプリを再作成して容量を空けるか、アプリが更新された VPC 設定を使用するようにしてください。
この問題は、SageMaker Studio ユーザーが別の実行ロールで構成されている場合に発生する可能性があります。ユーザーの実行ロール権限に必要なポリシーが含まれていることを確認します。Studio ノートブックの作成に必要な DescribeApp アクションを実行するには、これらのポリシーで実行ロールを有効にする必要があります。実行ロールのこれらの権限を更新した後、Studio ノートブックを VPC 専用モードでプロビジョニングしてみます。
関連するコンテンツ
- 質問済み 2ヶ月前lg...
- 質問済み 1年前lg...
- 質問済み 1年前lg...
- 質問済み 8年前lg...
- 質問済み 6年前lg...
- AWS公式更新しました 2年前