返回

SageMaker Unified Studio 域级 VPC 网络配置指南

RSS AWS Big Data Blog AI 逐段翻译 发布 2026-09-24 02:36 收录于 09-26

有效阅读仅保存在当前浏览器,用于「为你」推荐;暂停或清除记录。

DataHot 速览

企业运营团队在 Amazon SageMaker Unified Studio 中运行域级 VPC 网络时,通常要支持数据工程、分析和机器学习等多个项目。每个项目都需要私有连接内部数据库、Amazon S3 桶和 AWS 服务;若缺少域级 VPC 配置,项目所有者需逐个与网络团队协调,导致子网选择不一致、VPC 端点缺失和故障排查困难。文章介绍如何为使用 IAM 认证的 SageMaker Unified Studio 域配置域级 VPC,包括选择子网与安全组、实现多可用区韧性、让无 VPC 项目继承域 VPC,以及何时必须重建项目并从项目内验证网络连通性。

为什么值得关注:数据平台与 ML 平台在 AWS 上的网络隔离、私有连接和安全审计是落地关键;此文给出 SageMaker Unified Studio 域级 VPC 的配置、继承与迁移边界,适合平台与数据工程团队参考。

本文目录 11 节
  1. 解决方案概述
  2. 先决条件
  3. VPC 终端节点要求
  4. 解决方案演练
  5. 步骤 1:登录并导航到网络设置
  6. 步骤 2:添加 VPC 配置
  7. 步骤 3:更新现有项目
  8. 步骤 4:验证连接
  9. 更新 VPC 配置
  10. 清理
  11. 结论

译文

AI 逐段翻译

在 Amazon SageMaker Unified Studio 中运行域级 VPC 网络的企业运营团队通常需要支持数十个跨越数据工程、分析和机器学习 (ML) 团队的项目。每个项目都需要与内部数据库、Amazon Simple Storage Service (Amazon S3) 存储桶和 AWS 服务建立私有连接。如果没有域级 Amazon Virtual Private Cloud (Amazon VPC) 配置,项目负责人需要单独与网络团队协调。这种零散的方法会导致子网选择不一致、缺少 VPC 终端节点、难以排查的连接故障,以及难以审计的网络状况。

借助域级 VPC 网络,您只需配置一次网络,所有新项目在创建时即可立即获得正确的网络。在本文中,您将了解如何:

  • 配置 SageMaker Unified Studio 域级 VPC 网络。
  • 选择可提供多可用区 (multi-AZ) 弹性的子网和安全组。
  • 更新没有 VPC 的项目以继承域 VPC,并了解何时必须改为重新创建项目。
  • 从项目内部验证网络连接。

在本文中,您将了解如何为使用 AWS Identity and Access Management (IAM) 身份验证的 SageMaker Unified Studio 域配置 VPC 网络。您将了解网络组件如何映射到域和项目资源,以及如何规划一个兼顾安全性、连接性和运维简便性的配置。

解决方案概述

域级 VPC 网络提供适用于域中所有新项目的单一网络配置。项目会自动继承 VPC 设置,包括子网、安全组以及通过 VPC 终端节点与 AWS 服务的连接。现有项目是例外情况,需要单独处理(请参阅步骤 3)。

下图显示了一个在域级别配置的、跨两个可用区具有私有子网的单一 VPC,数据工程、分析和 ML 项目均继承该配置。

架构图,显示 Amazon SageMaker Unified Studio 中跨两个可用区具有私有子网的域级 VPC 配置。

图 1:Amazon SageMaker Unified Studio 中的域级 VPC 配置。在域级别配置了一个跨两个可用区具有私有子网的单一 VPC。所有项目(数据工程、分析、ML)自动继承此配置

此方法的主要优势:

  • 一次配置,跨项目应用: 新项目无需手动干预即可继承域 VPC。
  • 一致的安全状况: 单一网络边界覆盖所有数据、分析和 ML 工作负载。
  • 简化审计: 只需审计一个 VPC,而非每个项目一个。开启 VPC Flow Logs 并查看 AWS CloudTrail 事件以进行网络级审计。
  • 减少运维开销: 项目团队无需提交网络请求即可立即开始工作。

此解决方案使用以下 AWS 服务:

先决条件

在配置域级 VPC 网络之前,请确认您具备以下条件:

  • 域管理员权限 用于 Amazon SageMaker Unified Studio。
  • 至少两个位于不同可用区的私有子网。
  • 已启用 DNS 主机名和 DNS 支持。
  • 每个预期 Amazon SageMaker Unified Studio 项目至少五个可用 IP 地址。这是最低基线。使用 AWS Glue、Amazon EMR 或 Amazon Redshift Serverless 的工作负载会为每个工作程序或节点消耗额外的弹性网络接口 (ENI)。我们建议生产域使用 /24 或更大的子网,并根据预期用户和计算类型进行前瞻性容量规划。有关详细指导,请参阅 如何为 Amazon SageMaker Unified Studio 设置网络隔离的 VPC。

VPC 终端节点 已为您项目访问的 AWS 服务配置(例如 Amazon S3、AWS Glue、Amazon SageMaker AI)。在所有接口 VPC 终端节点上启用了私有 DNS(您必须启用此功能,以便服务 DNS 名称解析为私有 IP)。如果您通过 AWS Resource Access Manager (AWS RAM) 或 AWS Transit Gateway 使用集中式 VPC 终端节点,请改为配置 Amazon Route 53 Resolver 入站终端节点。已为所有选定私有子网配置 S3 网关终端节点路由表关联(如果没有此项,在路由表缺少前缀列表路由的子网中 S3 访问会失败)。 一个安全组(可选),如果未提供,SageMaker Unified Studio 会自动创建一个。SageMakerStudioAdminIAMConsolePolicy 托管策略(或等效权限,包括 ec2:Describe*, ec2:CreateSecurityGroup 和 datazone:* 操作)已附加到域管理员 IAM 角色。有关完整权限集,请参阅 AWS Managed Policy Reference 中的 SageMakerStudioAdminIAMConsolePolicy。 注意: VPC 必须与域位于同一 AWS 区域。

有关 VPC 网络配置的详细指导,请参阅 SageMaker Unified Studio 管理员指南中的 为基于 IAM 的域配置 VPC 网络。

VPC 终端节点要求

由于您的子网是私有的(没有互联网网关路由),计算资源通过 VPC 终端节点访问 AWS 服务。至少配置以下接口和网关终端节点(如果您在项目中使用 Amazon Athena、AWS Lake Formation 或 Amazon Redshift 终端节点,请添加它们):

终端节点类型用途
com.amazonaws.region.s3网关用于数据存储的 S3 访问
com.amazonaws.region.glue接口AWS Glue 作业连接
com.amazonaws.region.sagemaker.api接口SageMaker API 调用
com.amazonaws.region.sagemaker.runtime接口模型推理
com.amazonaws.region.logs接口Amazon CloudWatch Logs
com.amazonaws.region.monitoring接口Amazon CloudWatch 指标
com.amazonaws.region.sts接口IAM 角色代入
com.amazonaws.region.datazone接口Amazon SageMaker Unified Studio 服务连接
com.amazonaws.region.ecr.api接口ECR API 调用(容器镜像元数据)
com.amazonaws.region.ecr.dkr接口ECR 镜像层拉取(Docker 注册表)
com.amazonaws.region.kms接口AWS Key Management Service (AWS KMS) 加密/解密操作

注意: 接口端点按每个可用区收取小时费用,外加数据处理费用。网关端点(例如 S3)没有小时费用。在估算成本时,请将端点数量和可用区分布考虑在内。

有关完全网络隔离设置所需的所有强制和可选 VPC 端点的完整列表,请参阅 如何为 Amazon SageMaker Unified Studio 设置网络隔离的 VPC。有关当前定价详情,请参阅 AWS PrivateLink 定价。

注意: 在扩展之前,请查看您账户中每个 VPC 的接口 VPC 端点(默认 50)和每个区域的 ENI 的服务配额。如有需要,请通过 Service Quotas 申请增加配额。

解决方案演练

以下步骤将引导您完成域 VPC 的配置和验证,从登录控制台到确认项目的私有连接。

步骤 1:登录并导航到网络设置

  1. 以您的 Amazon SageMaker Unified Studio 域管理员身份(被指定为域登录角色的 IAM 角色)登录 AWS 管理控制台。
  2. 打开 Amazon SageMaker 控制台。
  3. 使用顶部导航栏中的区域选择器选择您的域所在的区域。
  4. 在 Amazon SageMaker Unified Studio 登录页面上,选择 打开 以启动您的基于 IAM 的域。

以下截图显示了 Amazon SageMaker Unified Studio 登录页面,您可以在其中选择 打开 以启动该域。

Amazon SageMaker Unified Studio 登录页面,其中包含用于启动基于 IAM 的域的“打开”按钮。

图 2:Amazon SageMaker Unified Studio 登录页面,其中包含用于启动基于 IAM 的域的“打开”按钮

  1. 从导航窗格中,选择 域管理。

以下截图显示了导航窗格中的“域管理”。

导航窗格显示 Amazon SageMaker Unified Studio 中的“域管理”链接。

图 3:导航窗格上的域管理

注意:对域管理页面的访问仅限于在域创建期间被指定为域登录角色的 IAM 角色。

步骤 2:添加 VPC 配置

  1. 在导航窗格中,选择 设置。在 此账户中的网络 部分中,选择 添加 VPC。

以下截图显示了“此账户中的网络”部分以及“添加 VPC”按钮。

域管理设置页面显示“此账户中的网络”部分以及“添加 VPC”按钮。

图 4:域管理设置页面显示“此账户中的网络”部分以添加 VPC

  1. 对于 VPC,选择与您的计算、数据库和存储资源具有连接的 VPC。如果不存在 VPC,请选择 创建 VPC 以使用 AWS CloudFormation 预置一个。
  2. 对于 子网,请选择至少两个位于不同可用区的私有子网。
  3. (可选)对于 安全组,选择一个安全组以控制入站和出站流量。如果您不选择,SageMaker Unified Studio 会自动创建一个。
  4. 选择 保存。
  5. 验证 VPC 配置状态在“此账户中的网络”部分中显示为 就绪。

以下截图显示了“添加 VPC”对话框以及 此账户中的网络 部分中生成的“就绪”状态。

“添加 VPC”对话框,其中包含 VPC、子网和安全组选择字段。

图 5:“添加 VPC”对话框,其中包含 VPC、子网和安全组选择字段

VPC 配置状态在“此账户中的网络”部分中显示为“就绪”。

图 6:VPC 配置状态在“此账户中的网络”部分中显示为“就绪”

注意: 基于 IAM 的域一次仅支持一个 VPC 配置。 AWS IAM Identity Center 的域可以每个区域有一个 VPC。有关详细信息,请参阅 为基于 IAM 的域配置 VPC 网络(位于 SageMaker Unified Studio 管理员指南中)。

现在,在域中创建的新项目会自动使用保存的 VPC 配置。现有项目是例外。请参阅步骤 3 进行更新。

步骤 3:更新现有项目

现有项目不会自动继承域 VPC 配置。您应用新设置的方式取决于项目的当前状态:

未配置 VPC 的项目 – 就地更新以采用域 VPC。请参阅以下步骤。

已具有 VPC 的项目 – 这些项目无法切换到不同的 VPC 配置。要采用域 VPC:

  1. 创建一个新项目(它会自动继承域 VPC)。
  2. 在新项目中重新创建连接。
  3. 从旧项目迁移资产。
  4. 备份您需要的任何数据,然后删除原始项目。

由于重新创建可能会中断正在进行的工作,并且不会自动迁移项目数据,请将其安排为计划内的维护窗口。

要更新当前未配置 VPC 的项目:

  1. 从域管理页面,在导航窗格中选择 项目。
  2. 选择您想要更新的项目。
  3. 在项目详情页面上,会出现一个横幅:“配置已更改。请更新此项目以访问最新配置。”
  4. 在横幅中,选择 更新。
  5. 在出现提示时确认更新。

对每个应使用域 VPC 的现有项目重复此过程。以下截图显示了带有配置更新横幅的项目详情页面。

项目详情页面显示 VPC 配置更改的更新横幅。

图 7:显示配置更新横幅的项目详情页面

步骤 4:验证连接

配置域 VPC 并更新项目后,请验证连接。计算资源应通过该 VPC 与 AWS 服务建立私有连接,而无需任何额外的项目级网络配置。

在您的某个项目中创建一个笔记本,如下一图所示,并运行以下代码:

在 SageMaker Unified Studio 项目中创建笔记本以验证 VPC 连接。

图 8:在 SageMaker Unified Studio 项目中创建笔记本以验证 VPC 连接

要求:Python 3.8+、Boto3 1.26 或更高版本。在您的 SageMaker Unified Studio 项目内的笔记本中运行。

import boto3
import socket
import ipaddress

def validate_vpc_connectivity():
    """Validate that the project has private connectivity to AWS services
    through the domain-level VPC configuration."""

    results = {}
    region = boto3.session.Session().region_name
    if not region:
        raise RuntimeError('Could not determine AWS Region. Run this notebook inside a SageMaker Unified Studio project.')

    # Test Amazon S3 access via VPC endpoint
    try:
        s3 = boto3.client('s3')
        response = s3.list_buckets()
        results['S3'] = f"[PASS] Accessible ({len(response['Buckets'])} buckets)"
    except Exception as e:
        results['S3'] = f"[FAIL] Failed: {e}"

    # Test AWS Glue access via VPC endpoint
    try:
        glue = boto3.client('glue')
        dbs = glue.get_databases()
        results['Glue'] = f"[PASS] Accessible ({len(dbs['DatabaseList'])} databases)"
    except Exception as e:
        results['Glue'] = f"[FAIL] Failed: {e}"

    # Test STS (role assumption through VPC endpoint)
    try:
        sts = boto3.client('sts')
        identity = sts.get_caller_identity()
        results['STS'] = f"[PASS] Accessible (Account: {identity['Account']})"
    except Exception as e:
        results['STS'] = f"[FAIL] Failed: {e}"

    # Verify interface endpoint resolves to private IP
    try:
        sts_endpoint = f"sts.{region}.amazonaws.com"
        addr_info = socket.getaddrinfo(sts_endpoint, 443, family=socket.AF_INET)
        ip = addr_info[0][4][0]
        is_private = ipaddress.ip_address(ip).is_private
        if is_private:
            results['DNS Resolution'] = f"[PASS] Private IP ({ip}) (traffic stays on AWS network)"
        else:
            results['DNS Resolution'] = f"[WARN] Public IP ({ip}) - check VPC endpoint config"
    except Exception as e:
        results['DNS Resolution'] = f"[FAIL] Failed: {e}"

    # Print results
    print("-" * 40)
    print("Domain VPC Connectivity Validation")
    print("-" * 40)
    for service, status in results.items():
        print(f" {service}: {status}")
    print("-" * 40)
    print(f"\n Region: {region}")

    # Check if all tests passed
    all_passed = all("[PASS]" in status for status in results.values())
    has_warn = any("[WARN]" in status for status in results.values())
    if all_passed:
        print(f"\n [PASS] All services accessible via private VPC endpoints.")
        print(f" This project inherited its network configuration")
        print(f" from the domain without per-project setup.")
    elif has_warn and all("[PASS]" in s or "[WARN]" in s for s in results.values()):
        print(f"\n [WARN] Services are reachable, but DNS resolves to public IPs.")
        print(f" Verify that Private DNS is enabled on your interface VPC endpoints.")
    else:
        print(f"\n [FAIL] Some services are not reachable.")
        print(f" Check that VPC endpoints are configured and security")
        print(f" groups allow outbound traffic on port 443.")

validate_vpc_connectivity()

VPC 配置正确时的预期输出:

成功验证输出,显示所有服务均可通过私有 VPC 端点访问。

图 9:成功验证输出,显示所有服务均可通过私有 VPC 端点访问

如果任何服务显示失败,一个常见原因是安全组阻止了到 VPC 端点 443 端口的流量。其他原因包括缺少 VPC 端点、路由表条目不正确或 DNS 解析问题。有关更多信息,请参阅 为基于 IAM 的域配置 VPC 网络,见《SageMaker Unified Studio 管理员指南》。

注意: AccessDenied 错误表明请求已到达服务。连接正常,但需要调整 IAM 权限(例如,S3 测试需要 s3:ListAllMyBuckets,而某些项目角色缺少该权限)。超时或连接错误则表明存在网络问题(缺少端点、路由或安全组规则)。以下截图显示了 VPC 端点缺失时的验证输出,其中受影响的服务报告超时错误。

未配置 VPC 端点时显示超时错误的验证输出。

图 10:未配置 VPC 端点时的验证输出。超时错误表明缺少端点

在域级别应用的安全组控制所有项目的网络访问。要查看或收紧规则:

  1. 导航到 Amazon VPC 控制台。
  2. 选择 安全组,然后选择您域的网络设置中显示的安全组。
  3. 查看 入站规则 和 出站规则 选项卡。

默认情况下,自动创建的安全组允许所有出站流量通过 443 端口(HTTPS)经 VPC 端点到达 AWS 服务。请考虑将出站规则限制为仅允许特定的 VPC 端点安全组,以实现最小权限访问。此外,请确保您的 VPC 端点安全组允许来自域安全组或子网 CIDR 的入站 TCP 443 流量。对于分布式计算服务(AWS Glue、Amazon EMR),请添加一条自引用入站规则以允许工作节点之间的通信。

更新 VPC 配置

初始设置完成后,您可以修改 VPC 配置以更改 VPC、子网或安全组:

  1. 在域管理页面上,选择导航窗格中的 设置。
  2. 在此账户中的网络部分,在操作列下,选择 更新。
  3. 根据需要更新 VPC、子网或安全组。
  4. 选择 更新。

以下截图显示了更新 VPC 对话框,您可以在其中修改 VPC、子网或安全组。

设置页面,操作菜单显示 VPC 配置的更新和移除选项。

图 11:更新 VPC 对话框,显示为域修改 VPC、子网或安全组的选项

重要: 更新 VPC 不会影响已预置的资源。项目中新建的资源将使用更新后的 VPC。已具有 VPC 的现有项目会保留其原始设置,必须重新创建才能采用该更改。没有 VPC 的项目可以就地更新(请参阅步骤 3)。

清理

要从您的域中移除 VPC 配置:

  1. 在域管理页面上,选择导航窗格中的 设置。
  2. 在此账户中的网络部分,选择 操作 菜单(⋮)并选择 移除。

以下截图显示了带有移除选项的操作菜单。

在此账户中的网络部分的操作菜单,显示移除选项。

图 12:在此账户中的网络部分的操作菜单,显示移除选项

如果您为本演练创建了专用 VPC 且不再需要它:

  • 从 Amazon VPC 控制台 删除 VPC 及关联资源(子网、VPC 端点、安全组)。删除之前,请移除域 VPC 配置并确保所有项目资源已终止。活动项目会创建 ENI,从而阻止 VPC 和子网的删除。
  • 如果您使用 AWS CloudFormation 模板创建了 VPC,请删除该堆栈以干净地移除所有资源。打开 AWS CloudFormation 控制台并删除该堆栈。

注意:移除域 VPC 配置不会追溯更改已应用 VPC 的项目。这些项目会保留其现有的网络配置。移除后创建的新项目不会配置 VPC。

结论

在这篇博文中,我们展示了如何在 Amazon SageMaker Unified Studio 中配置域级 VPC 网络。单一的域级 VPC 消除了每个项目的网络开销,强制执行一致的安全态势,并简化了合规审计。

关键要点:

  • 域级 VPC 是一次性配置,会自动应用于所有新项目。
  • 没有 VPC 的项目可以就地更新。已具有 VPC 的项目必须重新创建才能采用更改后的配置。
  • 带有 VPC 端点的私有子网可提供对 AWS 服务的安全、私有连接,而无需经过公共互联网。

作为后续步骤,请考虑:

  • 审查自动创建的安全组规则,并收紧这些规则以实现最小权限访问。
  • 随着项目需求的发展,为其他 AWS 服务添加 VPC 端点。
  • 监控子网 IP 地址使用情况,以便在添加更多项目时规划容量。使用子网的 AvailableIpAddressCount Amazon CloudWatch 指标来跟踪使用情况并设置告警。

有关更多信息,请参阅 为基于 IAM 的域配置 VPC 网络,见《Amazon SageMaker Unified Studio 管理员指南》。

这篇内容对你有用吗?

反馈只用于改善内容筛选,不等同于收藏

分享这条资讯
分享海报
保存图片
iOS 也可以长按图片保存