为什么仅限 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 的安全组包含所需规则

确保在端口 2049 上允许域和 Amazon Elastic File System (Amazon EFS) 卷之间的 AWS Network File System (AWS NFS) 流量通过 TCP。SageMaker Studio 数据使用 Amazon EFS 存储。因此,必须制定允许用于存储目的的入站和出站连接的规则。

要允许从 Amazon EFS 到您的资源的入站流量,请执行以下操作:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择安全组
  3. 选择要更新的安全组。
  4. 选择操作,然后选择编辑入站规则
  5. 选择添加规则,然后执行以下操作:
    对于类型,选择 NFS
    对于,选择自定义,然后输入 Amazon EFS ID。
  6. 选择保存规则

您必须允许安全组内的 TCP 流量,才能允许 JupyterServer 和 KernelGateway 应用程序之间的连接。由于您在仅限 VPC 模式下创建了 Studio 域,因此必须为您的 SageMaker Studio 域资源指定至少一个安全组。此安全组必须允许 8192-65535 端口上通过 TCP 的所有入站流量以及所有流向 0.0.0.0/0 的出站流量。

要允许 JupyterServer 和 KernelGateway 应用程序之间建立连接,请执行以下操作:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择安全组
  3. 选择要更新的安全组。
  4. 选择操作,然后选择编辑入站规则
  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 Notebooks 架构

确保创建了所需的 VPC 端点

如果您的 SageMaker Studio 资源不需要访问互联网,则无需添加 NAT 网关。但是,运行 Studio 笔记本需要以下端点:

  • SageMaker API: com.amazonaws.<aws-region>.sagemaker.api
  • SageMaker runtime: 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. 在导航窗格中,选择端点
  3. 选择要更新的端点。
  4. 选择操作,然后选择管理安全组
  5. 选择必须与此端点关联的安全组。
  6. 选择保存

有关更多信息,请参阅以下内容:

如果您需要互联网连接,请务必使用 NAT 网关

如果您的 SageMaker Studio 资源需要访问互联网,请首先确保 SageMaker Studio 设置为连接到私有子网。然后,创建 NAT 网关,并且允许来自 NAT 网关的流量通过私有子网的路由表。有关更多信息,请参阅如何为 Amazon VPC 中的私有子网设置 NAT 网关? 请注意,连接到公有子网的 SageMaker Studio 域不允许连接到互联网。

确保满足 VPC 的网络要求

如果您在仅限 VPC 模式下启动 SageMaker Studio,请确保您的 VPC 满足以下要求:

  • 子网必须有足够的可用的 IP 地址供实例使用。
  • 要允许访问互联网,请务必在域创建期间将您的 SageMaker 域与私有子网关联。此外,使用 NAT 网关访问互联网。
  • 如果您使用 VPC 端点运行 SageMaker API,则确保将 VPC 的启用 DNS 主机名启用 DNS 支持属性设置为 true。启动内核时,要求将您的 VPC 连接到 SageMaker API 端点。

您可以使用 AWS 命令行界面(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 中的 SageMaker Studio 笔记本连接到外部资源中的使用仅限 VPC 模式的要求部分。

其他注意事项

如果只有一个用户遇到此问题,请检查默认应用程序是否在 VPC 更新完成之前启动。在此情况下,默认 JupyterServer 应用程序不会自动更新以使用新的 VPC 配置,从而导致连接问题。另外,请检查默认 JupyterServer 应用程序是否在几周或几个月之前启动。这可能会导致应用程序包含大型日志文件和临时文件。尝试重新创建默认应用程序以释放空间,或者确保该应用程序使用更新的 VPC 配置。

如果为 SageMaker Studio 用户配置了不同的执行角色,则可能会出现此问题。确保用户的执行角色权限包括所需策略。这些策略必须开启执行角色才能运行创建 Studio 笔记本所需的 DescribeApp 操作。更新执行角色的这些权限后,尝试在仅限 VPC 模式下配置 Studio 笔记本。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?