

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Studio 以透過 VPC 內沒有網際網路存取的子網路執行
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access"></a>

本指南說明如何在 Amazon SageMaker AI 網域在沒有網際網路存取的私有子網路中執行時，從遠端 IDE 連線至 Amazon SageMaker Studio 空間。您將了解連線要求和設定選項，以在隔離的網路環境中建立安全的遠端連線。

您可以設定 Amazon SageMaker Studio，透過沒有網際網路存取的子網路在僅限 VPC 模式下執行。此設定透過在所有流量流經 VPC 的隔離網路環境中操作，以增強機器學習工作負載的安全性。若要在維護安全性的同時啟用外部通訊，請針對 AWS 服務使用 VPC 端點，並針對必要的 AWS 相依性設定 VPC PrivateLink。

**IDE 支援私有子網路連線**

下表顯示在沒有網際網路存取的情況下連接到私有子網路中的 Studio 空間時，每個遠端 IDE 支援的連線方法。


| 連線方法 | VS Code | Kiro | 游標 | 
| --- | --- | --- | --- | 
|  HTTP Proxy 支援  |  支援  |  支援  |  不支援  | 
|  預先封裝的遠端伺服器和擴充功能  |  支援  |  不支援  |  不支援  | 

**重要**  
不支援在沒有傳出網際網路存取的情況下連線至私有子網路中 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 在私有子網路中執行時，除了 SageMaker 所需的標準 VPC 端點之外，還要設定這些 SSM VPC 端點。如需詳細資訊，請參閱[透過 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 SageMaker AI 之類的 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 遠端伺服器。
+ 透過延伸模組面板安裝 VS Code 延伸模組時，需要存取 Visual Studio Marketplace 和相關的 CDN 端點 (或者，可以使用沒有網際網路連線的 VSIX 檔案手動安裝延伸模組)。
+ 有些延伸模組可能需要存取其他端點，才能下載其特定相依性。請參閱延伸模組的文件，了解其特定連線要求。

**Kiro 特定網路需求**

遠端 Kiro 連線需要 Kiro 遠端開發，這需要特定網路存取權才能安裝遠端伺服器和延伸模組。如需防火牆和代理伺服器組態，請參閱 [Kiro 防火牆組態](https://kiro.dev/docs/privacy-and-security/firewalls/)。這些要求類似於 VS 程式碼：
+ 安裝和更新 Kiro 遠端伺服器需要存取 Kiro 伺服器端點。
+ 透過延伸面板安裝 Kiro 延伸模組時，需要存取延伸模組市集和相關的 CDN 端點。
+ 有些延伸模組可能需要存取其他端點，才能下載其特定相依性。請參閱延伸模組的文件，了解其特定連線要求。

## 設定 Studio 遠端存取網路
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup"></a>

您有下列選項可將遠端 IDE 連線至私有子網路中的 Studio 空間：
+ HTTP Proxy （支援 VS 程式碼和 Kiro)
+ 預先封裝的遠端伺服器和延伸模組 （僅限 VS 程式碼）

### 使用受控允許清單設定 HTTP Proxy
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup-http-proxy-with-controlled-allow-listing"></a>

當您的 Studio 空間位於防火牆或代理之後時，允許存取您的 IDE 伺服器和延伸模組相關的 CDNs和端點。

1. 設定公有子網路以執行 HTTP Proxy (例如 Squid)，您可以在其中設定要允許哪些網站。確保 SageMaker 空間可存取 HTTP Proxy。

1. 公有子網路可以位於 Studio 使用的同一 VPC 中，也可以位於與 Amazon SageMaker AI 網域使用的所有 VPC 對等互連的個別 VPC 中。

### 設定預先封裝的遠端伺服器和延伸模組 （僅限 VS 程式碼）
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup-pre-packaged-vs-code-remote-server-and-extensions"></a>

**注意**  
此選項僅適用於 Visual Studio Code。Kiro 和 Cursor 不支援預先封裝的遠端伺服器設定。

當您的 Studio 空間無法存取外部端點，下載 VS Code 遠端伺服器和延伸模組時，您可以預先封裝它們。使用此方法，您可以匯出一個 tarball，其中包含特定版本 VS Code 的 `.VS Code-server` 目錄。然後，您可以使用 SageMaker AI 生命週期組態 (LCC) 指令碼，將 tarball 複製並擷取至 Studio 空間的主目錄 (`/home/sagemaker-user`)。此 LCC 型解決方案適用於 AWS提供的映像和自訂映像。即使您未使用私有子網路，此方法也會加速 VS Code 遠端伺服器和預先安裝延伸模組的設定。

**預先封裝 VS Code 遠端伺服器和延伸模組的指示**

1. 在您的本機電腦上安裝 VS Code。

1. 在本機或透過具有網際網路存取的 Studio 空間啟動一個啟用 SSH 的 Linux 型 (x64) Docker 容器。為了簡單起見，我們建議您使用一個啟用遠端存取和網際網路的臨時 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 預設設定檔。

1. 安裝所需的 VS Code 延伸模組並驗證其功能。例如，建立並執行筆記本，以在 VS Code 遠端伺服器中安裝 Jupyter 筆記本相關延伸模組。

   請務必在連線至遠端容器後[安裝 AWS Toolkit for Visual Studio Code 擴充](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)功能。

1. 在本機 Docker 容器或遠端連線 Studio 空間的終端中封存 `$HOME/.VS Code-server` 目錄 (例如 `VS Code-server-with-extensions-for-1.100.2.tar.gz`)。

1. 將 tarball 上傳到 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 伺服器 tarball。

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 用戶端與遠端伺服器之間的相容性。