Amazon SageMaker Studio 環境を VPC のみモードで使用すると、JupyterLab と Code Editor のスペースで接続の問題が発生します。
簡単な説明
仮想プライベートクラウド (VPC) を正しく設定しないと、SageMaker Studio で次の問題が発生する可能性があります。
- スペースのロード画面が応答せず、Amazon CloudWatch Logs で「エンドポイント URL 'https://api.sagemaker.us-east-1.amazonaws.com' への接続がタイムアウトしました」のようなエラーメッセージを受け取る。
- JupyterLab または Code Editor アプリケーションを読み込めない。
- インターネットに接続できず、コマンドがタイムアウトする。
- JupyterLab または Code Editor の拡張機能が期待どおりに動作しない。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
SageMaker Studio のセキュリティグループを設定する
SageMaker Studio では、基本機能に関する特定のポートルールは必要ありませんが、Amazon SageMaker AI からのアウトバウンドトラフィックに関するルールを追加する必要があります。デフォルトでは、SageMaker AI は API 通信に HTTPS (ポート 443) を使用します。
SageMaker Studio から AWS API へのアウトバウンドトラフィックのルールを追加するには、次の手順を実行します。
- Amazon Virtual Private Cloud (Amazon VPC) コンソールを開きます。
- ナビゲーションペインで [セキュリティグループ] を選択します。
- ドメインにアタッチされているセキュリティグループを選択します。
- [アクション] を選択し、[アウトバウンドのルールを編集] を選択します。
- [ルールを追加] を選択します。
[タイプ] で **[HTTPS]**を選択します。
[宛先] に 0.0.0.0 と入力します。
- [ルールを保存] を選択します。
SageMaker Studio からアクセスするリソースによっては、追加のポートやルールが必要になる場合があります。たとえば、ネットワークファイルシステム (NFS) プロトコルで次のリソースを使用するには、セキュリティグループがポート 2049 でのインバウンド接続とアウトバウンド接続を許可する必要があります。
- カスタムの Amazon Elastic File System (Amazon EFS)
- Amazon SageMaker Studio Classic
- Amazon EFS の自動マウント
SageMaker Studio ノートブックから VPC 内のリソースにアクセスすると、サービスアカウントのトラフィックフローはエラスティックネットワークインターフェイスを経由します。ドメインで作成したすべてのアプリケーションは、SageMaker AI サービスアカウント VPC 内に存在します。アプリケーションは、VPC に接続したネットワークインターフェイスを介して相互に通信します。これらのアプリケーションは SageMaker Studio ドメインサービスアカウントの一部ですが、異なる Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上で実行されます。
SageMaker Studio ドメインの DefaultUserSettings と DefaultSpaceSettings を更新して新しいセキュリティグループを使用するには、次の update-domain AWS CLI コマンドを実行します。
aws sagemaker update-domain --domain-id d-12345abcde \
--default-user-settings '{
"SecurityGroups": ["sg-0000"]
}' \
--default-space-settings '{
"ExecutionRole": "arn:aws:iam::111111111:role/SageMakerRole",
"SecurityGroups": ["sg-0000"]
}'
注: 上記のコマンドを実行する前に、ステータスが InService のすべてのアプリケーションをユーザープロファイルから削除する必要があります。
次に、必要なセキュリティグループにアタッチされているドメインを再作成します。SecurityGroups パラメータに対する出力には、SageMaker Studio が通信に使用する VPC のすべてのセキュリティグループが一覧表示されます。
セキュリティグループが更新されたことを確認するには、次の describe-domain コマンドを実行します。
aws sagemaker describe-domain --domain-id d-12345abcde
次に、SageMaker Studio を起動して、アプリケーションが正しく動作することを確認します。インターネット接続をテストするには、ノートブックセルから次のコマンドを実行します。
!curl amazon.com
詳細については、「VPC 内の Studio ノートブックを外部リソースに接続する」を参照してください。
サブネットに正しい VPC エンドポイントがあることを確認する
SageMaker Studio リソースがインターネットへのアクセスを必要としない場合は、NAT ゲートウェイを追加する必要はありません。ただし、Studio ノートブックを実行して基本的な操作を行うには、次のエンドポイントが必要です。
- SageMaker API: com.amazonaws.your-aws-region.sagemaker.api
- SageMaker runtime: com.amazonaws.your-aws-region.sagemaker.runtime
注: your-aws-region はご自身の AWS リージョンで置き換えてください。
Amazon Simple Storage Service (Amazon S3) と Amazon SageMaker プロジェクトテンプレートにアクセスするには、以下のエンドポイントを作成します。
- Amazon S3 の場合: com.amazonaws.your-aws-region.s3
- SageMaker プロジェクトテンプレート:com.amazonaws.your-aws-region.servicecatalog
注: your-aws-region はご自身のリージョンに置き換えてください。
セキュリティグループを VPC エンドポイントに関連付けるには、次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [エンドポイント] を選択します。
- 更新するエンドポイントを選択します。
- [アクション] を選択し、[セキュリティグループの管理] を選択します。
- セキュリティグループを選択します。
- [保存] を選択します。
詳細については、「SageMaker AI トレーニングジョブに Amazon VPC のリソースへのアクセスを許可する」 および「インターネットとの VPC only 通信」を参照してください。
ドメインをプライベートサブネットとアクティブな NAT ゲートウェイに接続する
SageMaker Studio リソースがインターネットにアクセスする必要がある場合は、プライベートサブネットに接続するようにドメインを設定します。次に、NAT ゲートウェイを作成し、NAT ゲートウェイからのトラフィックがプライベートサブネットのルートテーブルを通過できるようにします。詳細については、「Amazon VPC のプライベートサブネット用の NAT ゲートウェイをセットアップする方法を教えてください。」を参照してください。
注: パブリックサブネットに接続されている SageMaker Studio ドメインでは、インターネットに接続できません。
VPC が要件を満たしていることを確認する
SageMaker Studio を VPC のみモードで起動する場合、VPC は次の要件を満たしている必要があります。
- サブネットには、インスタンスに使用できる十分な IP アドレスが必要です。
- VPC エンドポイントを使用して SageMaker API を実行する場合は、VPC の [DNS ホスト名を有効化] と [DNS サポートを有効化] を [true] に設定します。SageMaker AI 機能を使用する場合、VPC には SageMaker AI API エンドポイントに接続するための属性が必要です。
設定に関する問題のトラブルシューティング
VPC 設定を更新しても問題が解決しない場合は、アプリケーションを再起動してください。
SageMaker Studio ユーザーに別の実行ロールを設定した場合、接続の問題が発生する可能性があります。
ユーザーの実行ロール権限に、ロールが以下のアクションを実行できるようにするのに必要なポリシーが含まれていることを確認してください。
- CreateNetworkInterface
- CreatePresignedDomainUrl
- CreateSpace
- CreateApp
- DescribeApp