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

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

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

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

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

  • HTTP プロキシを設定する

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

制御された許可リストを使用する HTTP プロキシ

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

設定が完了したら、remote.SSH.httpProxy 設定または remote.SSH.httpsProxy 設定でプロキシ URL を指定して、VS Code リモート開発用の HTTP プロキシを設定できます。

注記

リモート環境の curlrc ファイルと wgetrc ファイルの設定を使用するには、「Remote.SSH: Curl と Wget の設定ファイルを使用する」を有効にすることを検討してください。これにより、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

/tmp/remote_access/.VS Code-server をアーカイブし、「事前にパッケージされた VS Code リモートサーバーと拡張機能」の手順に従って接続し、拡張機能をインストールします。解凍したら、.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