连接到具有无互联网访问权限的子网的 VPC - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

连接到具有无互联网访问权限的子网的 VPC

在将 Visual Studio Code 连接到无互联网访问权限的私有子网中的 Studio 空间之前,请确保您的管理员已将 Studio 设置为在 VPC 中使用无互联网访问权限的子网运行

您可以通过两种方式将本地 Visual Studio Code 连接到私有子网中的 Studio 空间:

  • 设置 HTTP 代理

  • 预打包的 VS Code 远程服务器和扩展

带受控允许列表的 HTTP 代理

当您的 Studio 空间位于防火墙或代理后面时,请要求您的管理员允许访问 VS Code 服务器 CDNs 以及与扩展相关的端点。有关更多信息,请参阅 设置带受控允许列表的 HTTP 代理

设置完成后,您可以通过提供代理 URL 与 remote.SSH.httpProxyremote.SSH.httpsProxy 设置,为 VS Code 远程开发配置 HTTP 代理。

注意

考虑启用“Remote.SSH:使用 Curl 和 Wget 配置文件”,以使用远程环境的 curlrcwgetrc 文件中的配置。这样,放置在 SageMaker 空间中各自默认位置的curlrcwgetrc文件就可以用来启用某些案例。

此选项在您有权设置 HTTP 代理时适用,并可让您灵活地安装其他扩展,因为某些扩展需要公共端点。

预打包的 VS Code 远程服务器和扩展

当 Studio 空间无法访问外部端点以下载 VS Code 远程服务器和扩展时,可以将其预打包。通过这种方法,您的管理员可以导出一个压缩包,其中包含特定版本的 VS Code 的 .VS Code-server 目录。然后,管理员使用 A SageMaker I 生命周期配置 (LCC) 脚本将压缩包复制并解压缩到您的主目录 (/home/sagemaker-user)。有关更多信息,请参阅 设置预打包的 Visual Studio Code 远程服务器和扩展

VS Code 远程服务器和扩展的预打包说明

  1. 在本地计算机上安装 VS Code

  2. 当您连接到 SageMaker 空间时:

    • 使用默认配置文件以确保与预打包扩展的兼容性。否则,您需要在连接到 Studio 空间后,使用下载的 VSIX 文件安装扩展。

    • 选择要在启动空间时附加到空间的特定于 VS Code 版本的 LCC 脚本。

用于预打包 VS Code 远程服务器和扩展的 Dockerfile 用法示例

以下是一个示例 Dockerfile,用于在无法创建已启用远程访问和互联网连接的空间时,启动预安装了 SSH 服务器的本地容器。

注意
  • 在此示例中,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 C ode-server-v 1.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