為什麼在僅限 VPC 模式下的 Amazon SageMaker Studio 筆記本無法與 KernelGateway 應用程式連線?

上次更新日期:2022 年 12 月 9 日

在僅限 VPC 模式下的 Amazon SageMaker Studio 筆記本和 KernelGateway 應用程式之間發生連線問題。

簡短描述

您在僅限 VPC 模式下使用 SageMaker Studio,且無法啟動 KernelGateway 應用程式時,可能會收到下列錯誤:

您可以啟動 SageMaker Studio,但是您的核心失敗,並出現下列錯誤:

SageMaker Studio is unable to connect KernelGateway App. In VPCOnly mode, please ensure that security groups allow TCP traffic within the security group

您會收到此錯誤,通常是因為安全群組不是自引用,以允許 SageMaker 網域內的執行個體之間的連線。

例如,假設您可以啟動 SageMaker Studio,但需要很長時間才能載入且核心無法啟動:

Failed to start kernel
Failed to launch app [None]. SageMaker Studio is unable to reach SageMaker endpoint. Please ensure your VPC has connectivity to SageMaker via Internet or VPC Endpoint. If you are using VPC Endpoints, please ensure Security Groups allows traffic between Studio and VPC endpoints.

您的 VPC 網域無法連線到網際網路或 Amazon Virtual Private Cloud (Amazon VPC) 端點時,就會發生此錯誤。這可能是由於以下幾個原因造成的:

  • 未正確設定安全群組。
  • 您的子網路沒有正確的 VPC 端點。
  • 您的網域已連線至私有子網路,且沒有作用中 NAT 閘道新增至路由表。
  • 您可以將 SageMaker Studio 設定為連線至公用子網路。

解決方案

請確定 SageMaker Studio 的安全群組包含必要的規則

請確定網域和 Amazon Elastic File System (Amazon EFS) 磁碟區之間的 AWS Network File System (AWS NFS) 流量,允許透過 TCP 在 2049 連接埠上傳輸。您的 SageMaker Studio 資料是使用 Amazon EFS 儲存的。因此,您必須具備允許傳入和傳出連線以進行儲存用途的規則。

若要允許從 Amazon EFS 傳入資源的流量,請執行以下操作:

  1. 開啟 Amazon VPC 主控台
  2. 在導覽窗格中,選擇 Security Groups (安全群組)。
  3. 選取您要更新的安全群組。
  4. 選擇 Actions (動作),然後選擇 Edit inbound rules (編輯傳入規則)。
  5. 選擇 Add rule (新增規則),並執行以下操作:
    Type (類型),請選擇 NFS
    Source (來源),選擇 Custom (自訂),然後輸入 Amazon EFS ID。
  6. 選擇 Save rules (儲存規則)。

您必須允許安全群組內的 TCP 流量,以允許 JupyterServer 和 KernelGateway 應用程式之間的連線。因為您是在僅限 VPC 模式下建立 Studio 網域,因此您必須為 SageMaker Studio 網域資源指定至少一個安全群組。此安全群組必須允許連接埠 8192-65535 上透過 TCP 的傳入流量,以及所有傳輸至 0.0.0.0/0 的傳出流量。

若要允許 JupyterServer 與 KernelGateway 應用程式之間的連線,請執行下列動作:

  1. 開啟 Amazon VPC 主控台
  2. 在導覽窗格中,選擇 Security Groups (安全群組)。
  3. 選取您要更新的安全群組。
  4. 選擇 Actions (動作),然後選擇 Edit inbound rules (編輯傳入規則)。
  5. 選擇 Add rule (新增規則),並執行以下操作:
    對於 Type (類型),選擇 Custom TCP (自訂 TCP)。
    對於 Port Range (連接埠範圍),輸入 8192-65535
    Source (來源) 中,選擇 Custom (自訂),然後輸入您正在編輯之安全群組的安全群組 ID。
  6. 選擇 Save rules (儲存規則)。

當您從 SageMaker Studio 筆記本存取 Amazon VPC 中的資源時,來自 SageMaker 服務帳戶的流量會透過您的彈性網路界面進行路由。請注意,JupyterServer 和 KernelGateway 應用程式都在您的 SageMaker 服務帳戶 VPC 中。它們透過連接到 VPC 的彈性網路界面與彼此通訊。雖然這些應用程式是 SageMaker Studio 網域服務帳戶的一部分,但它們在不同的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行。這些應用程式使用暫時性連接埠建立彼此之間的連線。這些應用程式沒有連接的特定連接埠。因此,最佳實務是允許在自引用安全群組中,開啟所有 TCP 連接埠。如需詳細資訊,請參閱深入瞭解 Amazon SageMaker Studio 筆記本架構

請確定您已建立必要的 VPC 端點

如果您的 SageMaker Studio 資源不需要存取網際網路,則您不需要新增 NAT 閘道。但是,需要下列端點才能執行 Studio 筆記本:

  • SageMaker API:com.amazonaws.<aws-region>.sagemaker.api
  • SageMaker 執行時間:com.amazonaws.<aws-region>.sagemaker.runtime

請務必建立下列端點以存取 Amazon Simple Storage Service (Amazon S3) 和專案範本:

  • 對於 Amazon S3:com.amazonaws.<aws-region>.s3
  • 對於 Amazon SageMaker 專案範本:com.amazonaws.<aws-region>.servicecatalog

請務必執行下列動作,將 VPC 的安全群組與這些 VPC 端點建立關聯:

  1. 開啟 Amazon VPC 主控台
  2. 在導覽窗格中,選擇 Endpoints (端點)。
  3. 選擇您要更新的端點。
  4. 選擇 Actions (動作),然後選擇 Manage security groups (管理安全群組)。
  5. 選取必須與此端點關聯的安全群組。
  6. 選擇 Save (儲存)。

如需詳細資訊,請參閱下列內容:

如果您需要網際網路連線,請務必使用 NAT 閘道

如果您的 SageMaker Studio 資源需要存取網際網路,請先確定您的 SageMaker Studio 已設定為連線至私有子網路。然後,建立 NAT 閘道,並且透過您的私有子網路的路由表允許來自 NAT 閘道的流量。如需詳細資訊,請參閱如何在 Amazon VPC 中針對私有子網路設定 NAT 閘道? 請注意,連線至公有子網路的 SageMaker Studio 網域不允許您連線至網際網路。

確保符合 VPC 的網路需求

如果您在僅限 VPC 模式下啟動 SageMaker Studio,請確定您的 VPC 符合下列需求:

  • 子網路必須有足夠的可用 IP 地址供執行個體使用。
  • 若要允許網際網路存取,請務必在網域建立期間將 SageMaker 網域與私有子網路建立關聯。此外,請使用 NAT 閘道進行網際網路存取。
  • 如果您使用 VPC 端點執行 SageMaker API,請確定您 VPC 的 Enable DNS hostnames (啟用 DNS 主機名稱) 和 Enable DNS Support (啟用 DNS 支援) 屬性已設定為 True (真)。在啟動核心時,這是您的 VPC 連線至 SageMaker API 端點的必要條件。

您可以使用 AWS Command Line Interface (AWS CLI) 命令,確保將正確的安全群組連接到網域。若要更新 Studio 網域的 DefaultUserSettings (預設使用者設定) 以使用新的安全群組,請使用 update-domain (更新–網域) 命令:

aws sagemaker update-domain –domain-id <value> --default-user-settings SecurityGroups=<list>

您也可以透過重新建立連接到必要安全群組的網域,以重新設定網域。針對 SecurityGroups (安全群組) 參數的輸出,會列出 Studio 用於通訊的 VPC 的所有安全群組。

注意:若要執行前述命令,您必須從使用者設定檔中刪除所有具有 InService (服務中) 狀態的應用程式。

update-domain (更新–網域) 命令成功後,您可以使用 describe-domain (描述–網域) 命令檢查您的網域:

範例:

$ aws sagemaker describe-domain --domain-id d-xyzxyz

然後,再次啟動 SageMaker Studio,並確認筆記本是否正確啟動。您也可以透過在筆記本儲存格內執行 !curl amazon.com,來測試網際網路的連線能力。

注意:如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新版 AWS CLI

刪除 JupyterServer 應用程式並開啟新的應用程式,更新的設定才會生效。您可以在更新 Amazon VPC 設定後,使用 SageMaker Studio 使用者設定檔。如需詳細資訊,請參閱將 VPC 中的 Amazon SageMaker Studio 筆記本連接至外部資源中的使用僅限 VPC 模式的要求區段。

其他考量

如果只有一位使用者遇到此問題,請檢查預設應用程式是否在 VPC 更新完成之前啟動。在此情況下,預設 JupyterServer 應用程式不會自動更新以利用新的 VPC 設定,進而導致連線問題。此外,請檢查預設的 JupyterServer 應用程式是否在數週或數月之前啟動。這可能會導致應用程式具有大量的日誌檔案和臨時檔案。嘗試重新建立預設應用程式以釋放空間,或確定應用程式使用更新的 VPC 設定。

如果為 SageMaker Studio 使用者設定了不同的執行角色,則可能會發生此問題。請確定使用者的執行角色許可包含所需政策。這些政策必須開啟執行角色,才能執行建立 Studio 筆記本所需的 DescribeApp 動作。更新執行角色的這些許可之後,請嘗試以僅限 VPC 模式佈建 Studio 筆記本。


此文章是否有幫助?


您是否需要帳單或技術支援?