将 VPC 中的 SageMaker Studio 笔记本连接到外部资源
以下主题提供有关如何将 VPC 中的 Studio 笔记本连接到外部资源的信息。
与互联网的默认通信
默认情况下,SageMaker Studio 提供一个网络接口,允许通过 SageMaker 管理的 VPC 与互联网进行通信。Amazon S3 和 CloudWatch 等 Amazon 服务的流量会通过互联网网关,访问 SageMaker API 和 SageMaker 运行时的流量也是如此。域和 Amazon EFS 卷之间的流量会通过您在登录 Studio 或调用 CreateDomain API 时指定的 VPC。下图演示了默认配置。
与互联网的 VPC only
通信
为了防止 SageMaker 为 Studio 笔记本提供互联网访问,您可以在登录到 Studio 或调用 CreateDomain API 时指定 VPC only
网络访问类型来禁用互联网访问。因此,除非您的 VPC 有连接到 SageMaker API 和运行时的接口端点,或者有可访问互联网的 NAT 网关,并且您的安全组允许出站连接,否则您将无法运行 Studio 笔记本。下图显示了使用仅 VPC 模式的配置。
使用 VPC only
模式的要求
当您选择 VpcOnly
时,请按照以下步骤操作:
-
您只能使用私有子网。您不能在
VpcOnly
模式下使用公有子网。 -
确保您的子网具有所需数量的 IP 地址。每个用户预计需要的 IP 地址数量可能因使用案例而异。我们建议每位用户使用 2 到 4 个 IP 地址。Studio 域的 IP 地址总容量是创建域时为每个子网提供的可用 IP 地址的总和。确保您估算的 IP 地址使用量不超过您提供的子网数量所支持的容量。此外,使用分布在多个可用区的子网有助于提高 IP 地址的可用性。有关更多信息,请参阅针对 IPv4 的 VPC 和子网大小调整。
注意
如果实例在共享硬件上运行,您只能配置默认租赁 VPC 的子网。有关 VPC 租赁属性的更多信息,请参阅专用实例。
-
警告
使用
VpcOnly
模式时,您对域的网络配置拥有部分所有权。我们推荐的安全最佳实践是,对安全组规则提供的入站和出站访问应用最低权限。过于宽松的入站规则配置可能会让拥有 VPC 访问权限的用户在未经身份验证的情况下与其他用户配置文件的应用程序进行交互。使用允许以下流量的入站和出站规则设置一个或多个安全组:
-
域和 Amazon EFS 卷之间通过 2049 端口 TCP 传输的 NFS 流量。
-
安全组内的 TCP 流量。这是 Jupyter Server 应用程序和 Kernel Gateway 应用程序之间的连接所需。您必须至少允许
8192-65535
范围内的端口访问。
为每个用户配置文件创建不同的安全组,并添加来自同一安全组的入站访问权限。我们不建议对用户配置文件重复使用域级安全组。如果域级安全组允许对其自身进行入站访问,则该域中的所有应用程序都将有权访问域中的所有其他应用程序。
-
-
如果不想允许互联网访问,则创建接口 VPC 端点 (Amazon PrivateLink),以允许 Studio 使用相应的服务名称访问以下服务。您还必须将 VPC 的安全组与这些端点相关联。
-
SageMaker API:
com.amazonaws.
region
.sagemaker.api -
SageMaker 运行时:
com.amazonaws.
。这是运行 Studio 笔记本、训练和托管模型所需。region
.sagemaker.runtime -
Amazon S3:
com.amazonaws.
。region
.s3 -
使用 SageMaker 项目:
com.amazonaws.
。region
.servicecatalog -
您需要的任何其他 Amazon 服务。
如果使用 SageMaker Python SDK
运行远程训练作业,则还必须创建以下 Amazon VPC 端点。 -
Amazon Security Token Service:
com.amazonaws.
region
.sts -
Amazon CloudWatch:
com.amazonaws.
。这是允许 SageMaker Python SDK 从 Amazon CloudWatch 中获取远程训练作业状态时所需。region
.logs
-
注意
对于在 VPC 模式下工作的客户,公司防火墙可能会导致与 SageMaker Studio 的连接或 JupyterServer 和 KernelGateway 之间的连接出现问题。如果在防火墙后面使用 SageMaker Studio 时遇到上述问题,请进行以下检查。
-
检查 Studio URL 是否在您的网络允许列表中。
-
检查 WebSocket 连接是否被阻止。Jupyter 在后台使用 WebSocket。如果 KernelGateway 应用程序状态为 InService,则 JupyterServer 可能无法连接到 KernelGateway。打开系统终端时也应该会出现这个问题。