インターネットアクセスなしでサブネットを使用して VPC に接続する - Amazon SageMaker AI

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

インターネットアクセスなしでサブネットを使用して VPC に接続する

インターネットアクセスのないプライベートサブネットの Studio スペースに Visual Studio Code を接続する前に、管理者に があることを確認してくださいVPC 内のインターネットアクセスのないサブネットで実行するように Studio を設定する

ローカル Visual Studio コードをプライベートサブネットの Studio スペースに接続するには、次の 2 つのオプションがあります。

  • HTTP プロキシをセットアップする

  • パッケージ化された VS Code リモートサーバーと拡張機能

制御された許可リストを持つ HTTP プロキシ

Studio スペースがファイアウォールまたはプロキシの内側にある場合は、管理者に VS Code サーバーおよび拡張機能関連の CDNsとエンドポイントへのアクセスを許可するように依頼してください。詳細については、「制御された許可リストを使用して HTTP Proxy をセットアップする」を参照してください。

セットアップしたら、プロキシ URL に remote.SSH.httpProxyまたは remote.SSH.httpsProxy設定を指定することで、VS Code リモート開発用の HTTP プロキシを設定できます。

注記

リモート環境の curlrcおよび ファイルの設定を使用するには、「Remote.SSH: Curl And Wget 設定wgetrcファイルの使用」を有効にすることを検討してください。これは、SageMaker スペース内のそれぞれのデフォルトの場所に配置された curlrcおよび wgetrc ファイルを使用して、特定のケースを有効にできるようにするためです。

このオプションは、HTTP プロキシの設定が許可されているときに機能し、一部の拡張機能にはパブリックエンドポイントが必要なため、追加の拡張機能を柔軟にインストールできます。

パッケージ化された VS Code リモートサーバーと拡張機能

Studio スペースが外部エンドポイントにアクセスして VS Code リモートサーバーと拡張機能をダウンロードできない場合は、事前にパッケージ化できます。この方法では、管理者は特定のバージョンの VS Code の .VS Code-server ディレクトリを含む tarball をエクスポートできます。次に、管理者は SageMaker AI ライフサイクル設定 (LCC) スクリプトを使用して tarball をコピーし、ホームディレクトリ () に抽出します/home/sagemaker-user。詳細については、「パッケージ済みの Visual Studio Code リモートサーバーと拡張機能を設定する」を参照してください。

VS Code リモートサーバーと拡張機能に事前パッケージ化を使用する手順

  1. ローカルマシンに VS Code をインストールする

  2. SageMaker スペースに接続する場合:

    • デフォルトプロファイルを使用して、パッケージ化された拡張機能との互換性を確保します。それ以外の場合は、Studio スペースに接続した後に、ダウンロードした VSIX ファイルを使用して拡張機能をインストールする必要があります。

    • スペースを起動するときに、スペースにアタッチする VS Code バージョン固有の LCC スクリプトを選択します。

VS Code リモートサーバーと拡張機能を事前パッケージ化するための Dockerfile の使用例

以下は、リモートアクセスとインターネットが有効になっているスペースを作成できない場合に、SSH サーバーがプリインストールされたローカルコンテナを起動するための Dockerfile のサンプルです。

注記
  • この例では、SSH サーバーは認証を必要とせず、VS Code リモートサーバーのエクスポートにのみ使用されます。

  • コンテナは x64 アーキテクチャで構築して実行する必要があります。

FROM amazonlinux:2023 # Install OpenSSH server and required tools RUN dnf install -y \ openssh-server \ shadow-utils \ passwd \ sudo \ tar \ gzip \ && dnf clean all # Create a user with no password RUN useradd -m -s /bin/bash sagemaker-user && \ passwd -d sagemaker-user # Add sagemaker-user to sudoers via wheel group RUN usermod -aG wheel sagemaker-user && \ echo 'sagemaker-user ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/sagemaker-user && \ chmod 440 /etc/sudoers.d/sagemaker-user # Configure SSH to allow empty passwords and password auth RUN sed -i 's/^#\?PermitEmptyPasswords .*/PermitEmptyPasswords yes/' /etc/ssh/sshd_config && \ sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config # Generate SSH host keys RUN ssh-keygen -A # Expose SSH port EXPOSE 22 WORKDIR /home/sagemaker-user USER sagemaker-user # Start SSH server CMD ["bash"]

次のコマンドを使用して、コンテナを構築して実行します。

# Build the image docker build . -t remote_server_export # Run the container docker run --rm -it -d \ -v /tmp/remote_access/.VS Code-server:/home/sagemaker-user/.VS Code-server \ -p 2222:22 \ --name remote_server_export \ remote_server_export # change the permisson for the mounted folder docker exec -i remote_server_export \ bash -c 'sudo chown sagemaker-user:sagemaker-user ~/.VS Code-server' # start the ssh server in the container docker exec -i remote_server_export bash -c 'sudo /usr/sbin/sshd -D &'

次のコマンドを使用して接続します。

ssh sagemaker-user@localhost -p 2222

このコンテナを接続する前に、 .ssh/config ファイルで以下を設定します。その後、接続時にリモート SSH サイドパネルで をホスト名remote_access_exportとして表示できます。例:

Host remote_access_export HostName localhost User=sagemaker-user Port 2222 ForwardAgent yes

パッケージ化された VS Code リモートサーバーと拡張機能をアーカイブ/tmp/remote_access/.VS Code-serverして手順に従い、拡張機能を接続してインストールします。解凍後、 .VS Code-serverフォルダが親フォルダとして表示されることを確認します。

cd /tmp/remote_access/ sudo tar -czvf VS Code-server-with-extensions-for-1.100.2.tar.gz .VS Code-server

LCC スクリプトの例 (LCC-install-VS Code-server-v1.100.2)

以下は、特定のバージョンの VS Code リモートサーバーをインストールする方法の例です。

#!/bin/bash set -x remote_server_file=VS Code-server-with-extensions-for-1.100.2.tar.gz if [ ! -d "${HOME}/.VS Code-server" ]; then cd /tmp aws s3 cp s3://S3_BUCKET/remote_access/${remote_server_file} . tar -xzvf ${remote_server_file} mv .VS Code-server "${HOME}" rm ${remote_server_file} else echo "${HOME}/.VS Code-server already exists, skipping download and install." fi