View a markdown version of this page

設定 Studio 以透過 VPC 內沒有網際網路存取的子網路執行 - Amazon SageMaker AI

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

設定 Studio 以透過 VPC 內沒有網際網路存取的子網路執行

本指南說明如何在 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 空間的游標。

Studio 遠端存取網路要求

VPC 模式限制 VPC 模式中的 Studio 僅支援私有子網路。Studio 無法使用與網際網路閘道 (IGW) 直接連接的子網路。遠端 IDE 連線與 SageMaker AI 有相同的限制。如需詳細資訊,請參閱將 VPC 中的 Studio 筆記本連線至外部資源

當 SageMaker AI 在私有子網路中執行時,除了 SageMaker 所需的標準 VPC 端點之外,還要設定這些 SSM VPC 端點。如需詳細資訊,請參閱透過 VPC 端點連線 Studio

  • com.amazonaws.REGION.ssm

  • com.amazonaws.REGION.ssmmessages

VPC 端點政策建議

以下是建議的 VPC 端點政策,允許使用 aws:PrincipalIsAWSService條件進行遠端存取的必要動作,以確保只有 Amazon SageMaker AI 之類的 AWS 服務可以進行呼叫。如需 aws: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 文件中的遠端開發常見問答集。以下是要求摘要:

  • 需要存取 Microsoft 的 VS Code 伺服器端點,才能安裝和更新 VS Code 遠端伺服器。

  • 透過延伸模組面板安裝 VS Code 延伸模組時,需要存取 Visual Studio Marketplace 和相關的 CDN 端點 (或者,可以使用沒有網際網路連線的 VSIX 檔案手動安裝延伸模組)。

  • 有些延伸模組可能需要存取其他端點,才能下載其特定相依性。請參閱延伸模組的文件,了解其特定連線要求。

Kiro 特定網路需求

遠端 Kiro 連線需要 Kiro 遠端開發,這需要特定網路存取權才能安裝遠端伺服器和延伸模組。如需防火牆和代理伺服器組態,請參閱 Kiro 防火牆組態。這些要求類似於 VS 程式碼:

  • 安裝和更新 Kiro 遠端伺服器需要存取 Kiro 伺服器端點。

  • 透過延伸面板安裝 Kiro 延伸模組時,需要存取延伸模組市集和相關的 CDN 端點。

  • 有些延伸模組可能需要存取其他端點,才能下載其特定相依性。請參閱延伸模組的文件,了解其特定連線要求。

設定 Studio 遠端存取網路

您有下列選項可將遠端 IDE 連線至私有子網路中的 Studio 空間:

  • HTTP Proxy (支援 VS 程式碼和 Kiro)

  • 預先封裝的遠端伺服器和延伸模組 (僅限 VS 程式碼)

使用受控允許清單設定 HTTP Proxy

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

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

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

設定預先封裝的遠端伺服器和延伸模組 (僅限 VS 程式碼)

注意

此選項僅適用於 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。

  2. 在本機或透過具有網際網路存取的 Studio 空間啟動一個啟用 SSH 的 Linux 型 (x64) Docker 容器。為了簡單起見,我們建議您使用一個啟用遠端存取和網際網路的臨時 Studio 空間。

  3. 透過遠端 SSH 將已安裝的 VS Code 連線到本機 Docker 容器,或透過 Studio 遠端 VS Code 功能連線到 Studio 空間。VS Code 會在連線期間將遠端伺服器安裝到遠端容器主目錄中的 .VS Code-server。如需詳細資訊,請參閱預先封裝 VS Code 遠端伺服器和延伸模組的 Dockerfile 使用範例

  4. 遠端連線後,請確定您使用 VS Code 預設設定檔。

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

    請務必在連線至遠端容器後安裝 AWS Toolkit for Visual Studio Code 擴充功能。

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

  7. 將 tarball 上傳到 Amazon S3

  8. 建立 LCC 指令碼 (範例 LCC 指令碼 (LCC-install-VS Code-server-v1.100.2)):

    • 從 Amazon S3 下載特定封存檔。

    • 當私有子網路中的 Studio 空間啟動時,將其擷取到主目錄。

  9. (選用) 擴充 LCC 指令碼,以支援使用者特定 Amazon S3 資料夾中存放的每個使用者 VS Code 伺服器 tarball。

  10. (選用) 維護您可以連接到空間的版本特定 LCC 指令碼 (範例 LCC 指令碼 (LCC-install-VS Code-server-v1.100.2)),確保本機 VS Code 用戶端與遠端伺服器之間的相容性。