集团新闻

  • 首页 集团新闻 在 Amazon SageMaker 中使用 AWS PrivateLink 连接到 Amazon

在 Amazon SageMaker 中使用 AWS PrivateLink 连接到 Amazon

2026-01-27 13:30:21

使用 AWS PrivateLink 在 Amazon SageMaker 中连接到 Amazon 服务

关键要点

AWS 私有链接提供了一种安全的方式来访问 AWS 服务,避免将敏感数据通过公共互联网传输。在没有互联网连接的虚拟私有云 (VPC) 中创建 Amazon SageMaker 实例,可以通过 AWS PrivateLink 访问其他 AWS 服务。本文将指导您如何配置安全组和 VPC 端点,以便 SageMaker 实例能够安全地与 Amazon Bedrock 及其他服务连接。

AWS 客户在实施安全开发环境时,通常需要限制出入互联网流量。这在人工智能 (AI) 开发中尤为重要,因为必须保护的数据资产需要得到保障。通过互联网传输高度敏感数据并不够安全。因此,在不离开 AWS 网络的情况下访问 AWS 服务,可以构建一个安全的工作流。

一种确保 AI 开发安全的方法是通过在禁用直接互联网访问的虚拟私有云 (VPC) 中创建 Amazon SageMaker 实例。这将实例隔离于互联网,同时使得向其他 AWS 服务发送 API 调用变得不可能。这对构建需要多个 AWS 服务协同工作的生产架构的开发者来说是一个挑战。

在本文中,我们提供了一种解决方案,以配置 SageMaker 笔记本实例连接到 Amazon Bedrock 和其他 AWS 服务,借助 AWS PrivateLink 和 Amazon Elastic Compute Cloud (Amazon EC2) 的 安全组。

在 Amazon SageMaker 中使用 AWS PrivateLink 连接到 Amazon

解决方案概述

以下示例架构展示了 SageMaker 实例如何连接到各种服务。虽然 SageMaker 实例与互联网隔离,但仍能通过 PrivateLink 访问 AWS 服务。值得注意的是,连接到 Amazon S3 是通过一个网关 VPC 端点实现的。您可以在 此处 了解更多关于网关 VPC 端点的信息。

在接下来的部分中,我们将展示如何在 AWS 管理控制台 中进行这些配置。

创建用于出入端点访问的安全组

首先,您需要创建将附加到 VPC 端点和 SageMaker 实例的安全组。您需在创建 SageMaker 实例之前先创建这些安全组,因为实例创建后,无法更改安全组配置。

您创建两个组,一个用于出站,另一个用于入站。按照以下步骤进行操作:

在 Amazon EC2 控制台中,选择安全组。选择创建安全组。在安全组名称中输入名称例如,inboundsagemaker。在描述中输入描述。在VPC中选择您的 VPC。

记下安全组 ID,以便后续步骤使用。创建一个新的出站规则。在安全组名称中输入名称例如,outboundsagemaker。在描述中输入描述。在VPC中选择与入站规则相同的 VPC。在出站规则部分,选择添加规则。添加一个出站规则,目标为入站安全组 ID,类型选择 HTTPS。记下出站安全组 ID,以便下一个步骤使用。

返回到入站安全组,添加一个类型为 HTTPS 的入站规则,目标设置为出站安全组 ID。

创建带有出站安全组的 SageMaker 实例

现在,您可以创建具有以下网络配置的 SageMaker 实例。选择您用于创建入站和出站安全组的相同 VPC,然后选择您之前创建的出站安全组。

创建接口 VPC 端点

在这一步中,您将使用 Amazon Virtual Private Cloud 创建一个接口 VPC 端点,自动使用 PrivateLink,允许您的 SageMaker 实例调用 AWS 服务。

在 Amazon VPC 控制台中,选择端点。选择创建端点。在名称标签中输入名称例如,bedrocklink。在服务类别中选择AWS 服务。在服务中搜索并选择 comamazonawsbedrockruntime。

将 VPC 设置为您一直使用的 VPC。指定子网。

子网是 VPC 内 IP 地址的范围。如果不确定要指定哪个子网,任何子网都可以工作。否则,指定您云安全团队需要的安全要求所要求的子网。

将安全组设置为您之前创建的入站安全组。

创建设定后,端点会有一段时间才能变为可用。

为每个您工作流中需要的服务重复这些步骤。以下截图展示了您可以为其创建接口 VPC 端点的服务示例,如 Amazon Simple Storage Service (Amazon S3)、Amazon Kendra 和 AWS Lambda。AWS PrivateLink 使您能够私密地连接到多个 AWS 服务,查看当前支持的完整列表,请访问此 页面。

测试连接

您可以使用简单的 Python API 调用测试与 Amazon Bedrock 的连接。以下是调用 Amazon Bedrock 模型的代码片段:

pythonimport boto3import json

bedrock = boto3client(servicename=bedrockruntime)prompt = Human 你们有哪些鲨鱼种类Assistant

body = jsondumps({ prompt prompt maxtokenstosample 4000 temperature 01 topp 09})

modelId = anthropicclaudeinstantv1accept = application/jsoncontentType = application/json

response = bedrockinvokemodel(body=body modelId=modelId accept=accept contentType=contentType)responsebody = jsonloads(responseget(body)read())

print(responsebodyget(completion))

如果您尝试在 Jupyter notebook 单元格中运行上述代码,可能会出现错误,因为您还没有将调用指向 VPC 端点。这可以通过在客户端实例化时添加端点 URL 来实现:

pythonbedrock = boto3client( servicename=bedrockruntime endpointurl=https//vpce0e452bc86b1f87c505xltzdpobedrockruntimeuswest2vpceamazonawscom)

要查找端点 URL,请返回到您在上一步中创建的 VPC 端点,查找 DNS 名称,具体如下所示。建议使用私有 DNS,因为它与公共 DNS 是相同的,这意味着您不必更改任何内容即可使用私有连接。下一个最佳选择是使用区域 DNS,这是“DNS 名称”下的第一个选项。这两个选项都允许您的流量切换到其他健康的可用区 (AZ),以防当前可用区出现故障。

清理

要清理资源,请按照以下步骤操作:

在 SageMaker 控制台中,导航到笔记本配置页面。停止实例,然后选择删除以删除该实例。

在 Amazon EC2 控制台中,导航到入站安全组的详细信息页面。在操作菜单中,选择删除安全组。对出站安全组重复这些步骤。

在 Amazon VPC 控制台中,导航到 VPC 端点的详细信息页面。在操作菜单中,选择删除。对于您在本文中创建的每个端点,重复此步骤。

结论

本文展示了如何设置 VPC 端点和安全组,以允许 SageMaker 连接到 Amazon Bedrock。当 SageMaker 实例限制了互联网访问时,您仍然可以通过 AWS PrivateLink 开发并连接到其他 AWS 服务。虽然本文演示了如何从孤立的 SageMaker 实例连接到 Amazon Bedrock,但您可以对其他服务重复这些步骤。

我们鼓励您开始在 AWS 上开发 AI 应用程序。要了解更多信息,请访问 Amazon SageMaker、Amazon Bedrock 和 AWS PrivateLink 获取更多信息。祝您编码愉快!

关于作者

Francisco Calderon 是 AWS 生成式 AI 创新中心的数据科学家。在 GenAI 创新中心工作期间,他帮助 AWS 客户利用最新的生成 AI 技术解决关键商业问题。在业余时间,Francisco 喜欢演奏音乐和吉他,和女儿们踢足球,以及与家人共度时光。

银河加速器

Sungmin Hong 是 AWS 生成式 AI 创新中心的应用科学家,帮助加速 AWS 客户的各种用例。在加入亚马逊之前,Sungmin 是哈佛医学院的博士后研究员。他持有纽约大学的计算机科学博士学位。工作之余,Sungmin 喜欢徒步旅行、旅游和阅读。

Yash Shah 是 AWS 生成式 AI 创新中心的科学经理。他和他的应用科学家和机器学习工程师团队负责处理医疗、体育、汽车和制造领域的众多机器学习用例。

Anila Joshi 在构建 AI 解决方案方面拥有十年以上的经验。作为 AWS 生成式 AI 创新中心的应用科学经理,Anila 开创了 AI 的创新应用,推动可能性的边界,并指导客户在 AI 的未来战略上绘制路线图。