

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

# 将 Studio 设置为在 VPC 中使用无互联网访问权限的子网运行
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access"></a>

本指南向您展示当您的亚马逊 A SageMaker I 域在无法访问互联网的私有子网中运行时，如何从远程 IDE 连接到 Amazon SageMaker Studio 空间。您将了解在隔离的网络环境中建立安全远程连接所需的连接要求和设置选项。

您可以将 Amazon SageMaker Studio 配置为在仅限 VPC 模式下运行，子网无法访问互联网。此设置通过在隔离的网络环境中运行（所有流量均通过 VPC 传输），提高了机器学习工作负载的安全性。要在维护安全的同时启用外部通信，请将 VPC 终端节点用于 AWS 服务， PrivateLink 并为所需的 AWS 依赖项配置 VPC。

**IDE 支持私有子网连接**

下表显示了在无法访问互联网的情况下连接到私有子网中的 Studio 空间时，每个远程 IDE 支持的连接方法。


| 连接方法 | VS Code | Kiro | Cursor | 
| --- | --- | --- | --- | 
| HTTP 代理支持 | 支持 | 支持 | 不支持 | 
| Pre-packaged 远程服务器和扩展 | 支持 | 不支持 | 不支持 | 

**重要**  
在没有出站互联网访问权限的情况下，不支持 Cursor 连接到私有子网中的 Studio 空间。

**Topics**
+ [Studio 远程访问网络要求](#remote-access-remote-setup-vpc-subnets-without-internet-access-network-requirements)
+ [设置 Studio 远程访问网络](#remote-access-remote-setup-vpc-subnets-without-internet-access-setup)

## Studio 远程访问网络要求
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-network-requirements"></a>

**VPC 模式限制**：在 VPC 模式下，Studio 仅支持私有子网。Studio 无法与直接附加了互联网网关（IGW）的子网配合使用。远程 IDE 连接与 SageMaker AI 具有相同的限制。有关更多信息，请参阅[将 VPC 中的 Studio 笔记本连接到外部资源](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html)。

### VPC PrivateLink 要求
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-vpc-privatelink-requirements"></a>

当 SageMaker AI 在私有子网中运行时，除了所需的标准 VPC 终端节点外，还要配置这些 SSM VPC 终端节点。 SageMaker有关更多信息，请参阅[通过 VPC 端点连接 Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-interface-endpoint.html)。
+ `com.amazonaws.{{REGION}}.ssm`
+ `com.amazonaws.{{REGION}}.ssmmessages`

**VPC 终端节点策略建议**

以下是推荐的 VPC 终端节点策略，这些策略允许对远程访问进行必要的操作，同时使用`aws:PrincipalIsAWSService`条件来确保只有像 Amazon A SageMaker I 这样的 AWS 服务才能拨打电话。有关`aws:PrincipalIsAWSService`条件键的更多信息[，请参阅文档](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice)。

**SSM 终端节点策略**

对`com.amazonaws.{{REGION}}.ssm`终端节点使用以下策略：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "ssm:CreateActivation",
                "ssm:RegisterManagedInstance",
                "ssm:DeleteActivation",
                "ssm:DeregisterManagedInstance",
                "ssm:AddTagsToResource",
                "ssm:UpdateInstanceInformation",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:DescribeInstanceInformation",
                "ssm:ListInstanceAssociations",
                "ssm:ListAssociations",
                "ssm:GetDocument",
                "ssm:PutInventory"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:PrincipalIsAWSService": "true"
                }
            }
        }
    ]
}
```

**SSM 消息端点策略**

对`com.amazonaws.{{REGION}}.ssmmessages`终端节点使用以下策略：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:PrincipalIsAWSService": "true"
                }
            }
        }
    ]
}
```

**VS Code 的特定网络要求**

远程 VS Code 连接需要 VS Code 远程开发功能，而该功能需要特定的网络访问权限，以安装远程服务器和扩展。有关完整网络要求，请参阅 Visual Studio Code 文档中的[远程开发常见问题](https://code.visualstudio.com/docs/remote/faq)。以下是要求汇总：
+ 需要获得对 Microsoft VS Code 服务器端点的访问权限，才能安装和更新 VS Code 远程服务器。
+ 需要获得对 Visual Studio Marketplace 和相关 CDN 端点的访问权限，才能通过扩展面板安装 VS Code 扩展（也可以在无互联网连接的情况下，使用 VSIX 文件手动安装扩展）。
+ 某些扩展可能需要对其他端点的访问权限才能下载其特定依赖项。请参阅扩展的文档以了解其特定的连接要求。

**Kiro 的特定网络要求**

远程 Kiro 连接需要 Kiro 远程开发，需要特定的网络访问权限才能安装远程服务器和扩展。有关防火墙和代理服务器的配置，请参阅 [Kiro 防火墙配置](https://kiro.dev/docs/privacy-and-security/firewalls/)。要求与 VS Code 类似：
+ 安装和更新 Kiro 远程服务器需要访问 Kiro 服务器端点。
+ 要通过扩展面板安装 Kiro 扩展，需要访问扩展市场和相关的 CDN 端点。
+ 某些扩展可能需要对其他端点的访问权限才能下载其特定依赖项。请参阅扩展的文档以了解其特定的连接要求。

## 设置 Studio 远程访问网络
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup"></a>

您可以通过以下选项将远程 IDE 连接到私有子网中的 Studio 空间：
+ HTTP 代理（支持 VS Code 和 Kiro）
+ Pre-packaged 远程服务器和扩展（仅限 VS Code）

### 设置带受控允许列表的 HTTP 代理
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup-http-proxy-with-controlled-allow-listing"></a>

当您的 Studio 空间位于防火墙或代理后面时，请允许访问您的 IDE 服务器以及与扩展相关的 CDN 和端点。

1. 设置一个公有子网来运行 HTTP 代理（如 Squid），您可在该子网中配置允许访问的网站。确保 SageMaker 空格可以访问 HTTP 代理。

1. 公有子网可以位于 Studio 使用的同一 VPC 中，也可以位于与 Amazon A SageMaker I 域使用的所有 VPC 对等的单独的 VPC 中。

### 设置 Pre-packaged 远程服务器和扩展（仅限 VS Code）
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup-pre-packaged-vs-code-remote-server-and-extensions"></a>

**注意**  
此选项仅适用于 Visual Studio 代码。Kiro 和 Cursor 不支持预先打包的远程服务器设置。

当 Studio 空间无法访问外部端点以下载 VS Code 远程服务器和扩展时，可以将其预打包。通过这种方法，您可以导出一个压缩包，其中包含特定版本的 VS Code 的 `.VS Code-server` 目录。然后，使用 A SageMaker I 生命周期配置 (LCC) 脚本将压缩包复制并解压缩到 Studio 空间的主目录 (`/home/sagemaker-user`) 中。此 LCC-based 解决方案适用于 AWS提供的图像和自定义的图像。即便您未使用私有子网，此方法也能加快设置 VS Code 远程服务器与预安装的扩展。

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

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

1. 在本地启动启用了 SSH 的 Linux-based (x64) Docker 容器，可以在本地启动，也可以通过可访问互联网的 Studio 空间启动。为简便起见，我们建议使用一个已启用远程访问和互联网连接的临时 Studio 空间。

1. 通过远程 SSH 将已安装的 VS Code 连接到本地 Docker 容器，或通过 Studio 远程 VS Code 功能连接到 Studio 空间。在连接过程中，VS Code 会将远程服务器安装到远程容器主目录下的 `.VS Code-server` 中。请参阅[用于预打包 VS Code 远程服务器和扩展的 Dockerfile 用法示例](remote-access-local-ide-setup-vpc-no-internet.md#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-dockerfile)了解更多信息。

1. 远程连接后，请确保使用 VS Code Default 配置文件。

1. 安装所需的 VS Code 扩展并验证其功能。例如，创建并运行笔记本以在 VS Code 远程服务器上安装与 Jupyter Notebook 相关的扩展。

   确保[在连接到远程容器后安装 AWS Toolkit for Visual Studio Code 扩展程序](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)。

1. 将 `$HOME/.VS Code-server` 目录（例如 `VS Code-server-with-extensions-for-1.100.2.tar.gz`）归档至本地 Docker 容器或远程连接的 Studio 空间的终端中。

1. 将压缩包上传到 Amazon S3。

1. 创建一个 [LCC 脚本](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lifecycle-configurations.html)（[LCC 脚本示例 () LCC-install-VS Code-server-v1.100.2](remote-access-local-ide-setup-vpc-no-internet.md#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-lcc)）以便：
   + 从 Amazon S3 中下载特定归档。
   + 当私有子网中的 Studio 空间启动时，将其提取到主目录中。

1. （可选）扩展 LCC 脚本以支持存储在用户特定 Amazon S3 文件夹中的各用户的 VS Code 服务器压缩包。

1. （可选）维护可附加到空间的特定版本的 LCC 脚本（[LCC 脚本示例 () LCC-install-VS Code-server-v1.100.2](remote-access-local-ide-setup-vpc-no-internet.md#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-lcc)），确保本地 VS Code 客户端与远程服务器之间的兼容性。