连接到具有无互联网访问权限的子网的 VPC - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

连接到具有无互联网访问权限的子网的 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