**发布时间:** 2025-10-13
**厂商:** AWS
**类型:** BLOG
**原始链接:** https://aws.amazon.com/blogs/networking-and-content-delivery/enabling-cross-region-private-access-to-amazon-s3-with-existing-application-configuration/
---
<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 无需修改现有应用配置,即可实现对 Amazon S3 的跨区域私有访问
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 解决方案分析
## 解决方案概述
该解决方案旨在解决企业在**不修改现有应用程序配置**的前提下,实现对其他AWS区域(Region)中Amazon S3存储桶的**私有网络访问**。在许多受监管行业或大型企业中,出于安全与合规要求,跨区域的资源访问必须在私有网络环境中进行。传统方式通常需要应用层面修改S3端点URL,操作复杂且难以扩展。
此方案巧妙地结合了 **S3接口端点的私有DNS(Private DNS for Amazon S3)** 功能与 **Amazon Route 53 Resolver的跨区域解析能力**,使得应用程序发出的标准S3公网域名请求(如`s3.eu-west-1.amazonaws.com`)能够被透明地解析为远程区域S3接口端点的私有IP地址。数据流量全程经由AWS全球骨干网传输,不经过公共互联网,从而在保障安全性的同时,简化了架构并提升了性能。
## 实施步骤
1. **建立跨区域私有网络连接**
- 这是实现私有访问的基础。需要在应用所在区域的VPC与S3存储桶所在区域的VPC之间建立私有连接。
- 可选技术包括:
- **AWS Transit Gateway Peering**: 适用于构建中心辐射型(Hub-and-Spoke)的全球网络。
- **VPC Peering**: 适用于点对点的简单VPC连接。
- **AWS Cloud WAN**: 用于构建统一、可扩展的全球网络。
2. **在远程区域为S3启用私有DNS支持**
- 在S3存储桶所在的区域(远程区域,例如爱尔兰`eu-west-1`),为S3创建一个**接口VPC端点(Interface VPC Endpoint)**。
- 在创建该端点时,必须启用 **“私有DNS名称(Private DNS names)”** 选项。
- **技术原理**: 启用此选项后,AWS会自动将该区域的S3标准域名(`s3.eu-west-1.amazonaws.com`)在VPC内部的DNS解析记录,从公网IP地址覆盖为该接口端点关联的弹性网络接口(ENI)的私有IP地址。
3. **配置Route 53 Resolver实现跨区域DNS解析**
- 这是实现对应用透明化的关键步骤,通过DNS转发机制将解析请求引导至正确的端点。
- **在S3所在的远程区域(爱尔兰)**:
- 创建一个 **Route 53 Resolver 入站端点(Inbound Endpoint)**。此端点的作用是接收来自其他VPC(如此例中法兰克福区域的VPC)的DNS查询请求。
- **在应用所在的客户端区域(法兰克福)**:
- 创建一个 **Route 53 Resolver 出站端点(Outbound Endpoint)**。
- 创建一条 **转发规则(Forwarding Rule)**,将所有对远程S3域名(`s3.eu-west-1.amazonaws.com`)的DNS查询,转发到上一步中创建的远程区域(爱尔兰)入站端点的私有IP地址。
4. **测试与验证**
- 在客户端区域的EC2实例上,通过 `dig` 或 `nslookup` 命令查询远程S3域名,验证其是否解析为远程区域S3接口端点的私有IP。
- 使用 `curl` 或AWS CLI等工具直接访问S3对象,确认数据可通过私有连接成功获取。
## 方案客户价值
- **无缝的应用兼容性与透明化部署**
- 核心价值在于**无需修改任何应用程序代码或配置**。应用可以继续使用标准的、公开的S3域名,网络底层会自动将流量路由至私有路径。这极大地降低了迁移成本和运维复杂性,对拥有大量存量应用的企业尤其重要。
- **强化安全与合规性**
- 所有跨区域S3访问流量均被限制在AWS的私有、高带宽、冗余的全球骨干网内,完全避免了公共互联网暴露,有效防止数据泄露风险,满足了金融、医疗等行业对数据隔离的严格合规要求。
- **提升性能并优化成本**
- _避免NAT网关费用_:由于流量不经由NAT网关出公网,企业可以节省相关的数据处理费用。
- _性能更可预测_:相比于不稳定的公共互联网,AWS骨干网提供了更低延迟和更稳定的网络性能。
- **简化云上网络架构管理**
- 该方案可由平台团队或云卓越中心(CCoE)进行集中配置和管理,一次部署即可让区域内所有新旧应用自动受益,实现了网络策略的统一实施。
## 涉及的相关产品
- **Amazon S3**: 解决方案的目标对象存储服务。
- **Amazon VPC**: 提供隔离的云上网络环境。
- **S3 接口端点 (AWS PrivateLink)**: 在VPC内为S3提供私有连接的关键组件,是实现私有访问的基石。
- **Amazon Route 53 Resolver**: 核心DNS解析服务。其**入站/出站端点**和**转发规则**是实现跨区域私有域名解析的关键机制。
- **AWS Transit Gateway / VPC Peering / AWS Cloud WAN**: 用于建立底层跨区域VPC之间私有网络连接的服务选项。
## 技术评估
- **优势**
- **架构优雅解耦**: 方案将网络路由的复杂性与应用逻辑完全分离,实现了对应用层透明的网络优化,符合现代云原生架构设计理念。
- **原生服务集成**: 完全基于AWS成熟的原生服务构建,具有高可用性、高可扩展性和安全性,无需引入或管理第三方网络设备或软件。
- **可扩展性强**: 无论是VPC Peering、Transit Gateway还是Cloud WAN,都提供了灵活的扩展能力,能够支持从简单到复杂的全球网络拓扑。
- **潜在限制与注意事项**
- **引入跨区域依赖**: 该方案在应用和远程S3存储之间建立了紧密的网络依赖。在进行多区域容灾设计时,必须仔细评估这种依赖关系对整体系统可用性的影响。
- **服务配额考量**: 在大规模部署时,需要关注 **Route 53 Resolver端点** 和 **AWS PrivateLink接口端点** 的相关服务配额(Limits),并按需申请提升。
- **特定区域兼容性**: 对于美东(弗吉尼亚北部)`us-east-1`区域,由于其支持遗留的全局S3端点(`s3.amazonaws.com`),在配置Route 53转发规则时需要额外处理此特殊域名。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 使用现有应用程序配置实现对 Amazon S3 的跨区域私有访问
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/enabling-cross-region-private-access-to-amazon-s3-with-existing-application-configuration/](https://aws.amazon.com/blogs/networking-and-content-delivery/enabling-cross-region-private-access-to-amazon-s3-with-existing-application-configuration/)
**发布时间:** 2025-10-13
**厂商:** AWS
**类型:** BLOG
---
许多组织需要在其跨不同区域的 AWS 资源之间维持严格的私有网络通信,尤其是在处理敏感数据或满足合规性要求时。为了优化性能并最大限度地降低成本,即使在使用公有 IP 地址的情况下,将数据流保持在 AWS 的私有网络内也是一种架构最佳实践。然而,受监管的行业和企业通常要求内部通信使用私有 IP 地址以满足其安全策略。尽管 AWS 自 2022 年以来已支持跨区域连接和亚马逊简单存储服务 (Amazon S3) 接口终端节点 (interface endpoints) 的私有寻址,但实现这些功能通常需要修改应用程序以使用特定的域名。本文将演示如何利用 Amazon S3 的私有 DNS 支持功能,在保留当前配置的同时实现跨区域私有访问。该解决方案将私有终端节点 (private endpoints) 的原生解析扩展到 AWS 各区域,允许应用程序通过私有连接使用远程区域中的 Amazon S3 资源,而无需进行任何更新。这样一来,远程区域中的公有 Amazon S3 URL 会自动解析为用于直接访问的私有 IP 地址,从而在保持应用程序兼容性的同时提高了安全性。
## 通过私有连接实现原生 Amazon S3 跨区域访问概述
为了演示该解决方案,我们假设一家企业在两个 AWS 区域运营:法兰克福 (eu-central-1) 和爱尔兰 (eu-west-1)。下图展示了业务应用程序运行在法兰克福 VPC “客户端” 中,通过爱尔兰 “远程” VPC 中的 Amazon S3 接口终端节点来使用存储在爱尔兰的数据。

*图 1: 使用 Amazon Route 53 Resolver 解析远程区域中的 Amazon S3 接口终端节点。*
在本次解决方案演练中,我们将以爱尔兰 (eu-west-1) 和法兰克福区域为例,其中爱尔兰托管 S3 资源,法兰克福包含客户端应用程序。虽然我们使用这些区域来演示概念,但该解决方案可以在任意两个 AWS 区域之间实施。该解决方案包含三个主要组件:
1. 在托管 S3 资源的远程区域爱尔兰 (eu-west-1) 中,为 Amazon S3 配置私有 DNS 支持。此配置会使用爱尔兰区域内接口终端节点的私有 IP 地址来更新区域性 DNS 名称 (s3.eu-west-1.amazonaws.com) 的 Amazon Route 53 记录。
2. 建立 Route 53 Resolver 终端节点 (Route 53 Resolver endpoints),以便从客户端应用程序所在的法兰克福区域对 Amazon S3 接口终端节点进行跨区域解析。
3. 由于远程区域性 DNS 名称 (s3.eu-west-1.amazonaws.com) 现在会解析为私有接口终端节点 IP 地址,法兰克福的应用程序可以通过私有连接连接到爱尔兰的 Amazon S3。
无论您选择使用哪个区域,这个区域性设置都为您如何在自己的环境中实施该解决方案提供了一个实际的例子。
## 实施解决方案组件
本演练概述了解决方案各部分所需的步骤。您的环境可能有所不同,并且可能包含无需修改现有应用程序即可使用此解决方案的组件。
### 前提条件
要完成此解决方案,需要满足以下前提条件:
- 拥有一个 AWS 账户,并具备在 AWS 区域间建立连接以及为 Amazon S3 和 Route 53 Resolver 创建终端节点的权限。
### 步骤 1. 建立 AWS 区域间的私有连接
需要在 AWS 骨干网络 (AWS backbone network) 上建立区域间连接,为远程区域中的 Amazon S3 资源提供一条私有路径。这使得您的工作负载无需 NAT 或使用任何公有 IP 地址即可连接到远程区域中的 Amazon S3。 [AWS 骨干网络](https://aws.amazon.com/about-aws/global-infrastructure/) 采用完全冗余的 400 GbE 光纤构建,通常能在 AWS 区域之间提供数 Tb 的容量。两个 AWS 区域可以通过 [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) 对等连接或 [亚马逊虚拟私有云 (Amazon VPC)](https://aws.amazon.com/vpc/) 对等连接进行连接。如果您是首次在 AWS 区域之间建立连接,请在选择 AWS Transit Gateway 和 VPC 对等连接时,查阅 [关键注意事项](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/amazon-vpc-to-amazon-vpc-connectivity-options.html) 。您也可以使用 [AWS Cloud WAN](https://docs.aws.amazon.com/network-manager/latest/cloudwan/what-is-cloudwan.html) ,它在路由域 (routing domains) 之间提供了逻辑分离,是构建可扩展全球网络的简单方法。
### 步骤 2. 在远程区域为 Amazon S3 启用私有 DNS 支持
[Amazon S3 的私有 DNS (Private DNS for Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#private-dns) 功能可使区域性的 Amazon S3 DNS 查询解析为 Amazon S3 接口终端节点的私有 IP 地址。文章 [通过 AWS PrivateLink 引入对 Amazon S3 的私有 DNS 支持](https://aws.amazon.com/blogs/storage/introducing-private-dns-support-for-amazon-s3-with-aws-privatelink/) 介绍了不同类型的 Amazon S3 VPC 终端节点,并详细演练了如何优化区域内的访问,包括与本地位置的混合连接。如下图所示,当启用私有 DNS 支持后,Route 53 Resolver 会使用以下格式的私有 IP 地址更新 Amazon S3 接口终端节点:s3.<Region>.amazonaws.com。创建 Amazon S3 VPC 终端节点时,与其关联的安全组 (security group) 应具有适当的权限,以允许来自每个 AWS 区域范围内的应用程序访问。

*图 2: 在接口终端节点上启用 Amazon S3 的私有 DNS*
下图显示了分配给 Amazon S3 接口终端节点的弹性网络接口 (ENIs) 的私有 IP 地址。

*图 3: Amazon S3 接口终端节点的私有 IP 地址*
如下图所示,当从终端节点所在区域 (eu-west-1) 内的实例对爱尔兰的 Amazon S3 区域性 DNS 名称 (s3.eu-west-1.amazonaws.com) 进行 DNS 解析时,它会解析为私有 IP 地址。这验证了私有 DNS 已启用,因为 Route 53 Resolver 已更新为 Amazon S3 接口终端节点的私有 IP 地址。

*图 4: 区域内终端的 DNS 解析显示 Amazon S3 的私有接口终端节点 IP*
### 步骤 3. 使用 Route 53 Resolver 配置 Amazon S3 接口终端节点的跨区域解析
当在 VPC 中创建 Amazon S3 接口终端节点时,它会启用对同一区域内 S3 存储桶的区域性私有访问。S3 存储桶域名的解析会返回与可用区 (AZ) 中接口终端节点关联的 ENI 的 IP 地址。但是,该接口终端节点无法从其他 AWS 区域的对等 VPC 解析。为了解决这个问题,我们使用 [Route 53 Resolver 终端节点](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html) 。
参考图 1,在包含 Amazon S3 接口终端节点的爱尔兰区域 (eu-west-1) 的远程 VPC 中创建一个 [Route 53 Resolver 入站终端节点 (Route 53 Resolver inbound endpoint)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) 。下图详细说明了接受来自远程源 (在我们的示例中是法兰克福区域 (eu-central-1) 的 VPC) 的 DNS 查询的入站终端节点 IP。

*图 5: 爱尔兰区域中的 Route 53 Resolver 入站终端节点。*
为了避免更改现有或未来的应用程序,我们在法兰克福区域 (eu-central-1) 的客户端 VPC 中创建了一个 Route 53 Resolver 出站终端节点 (Route 53 Resolver outbound endpoint),用于将远程 Amazon S3 资源的名称解析请求转发到上一步中配置的入站终端节点。

*图 6: 客户端法兰克福区域中的 Route 53 Resolver 出站终端节点*
下图详细说明了匹配远程资源 (s3.eu-west-1.amazonaws.com) 的 Route 53 Resolver 规则以及用于转发 DNS 查询的目标 IP 地址。

*图 7: 将匹配的 DNS 查询转发到爱尔兰区域 VPC 的出站解析器规则*
配置好 Route 53 Resolver 终端节点后,当从法兰克福区域的客户端 VPC 查询远程 Amazon S3 区域终端节点的 DNS 名称时,它会解析为位于远程爱尔兰区域的 Amazon S3 接口终端节点的私有 IP。下图显示了从法兰克福区域的实例对 s3.eu-west-1.amazonaws.com 进行的 DNS 解析,返回了爱尔兰 Amazon S3 接口终端节点的私有 IP。

*图 8: 从客户端 AWS 区域进行的终端 DNS 解析,解析出远程区域中 Amazon S3 接口终端节点的私有 IP*
美国东部 (弗吉尼亚北部) 区域向后兼容 [旧版全局终端节点 (legacy global endpoints)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) 。为了适应此区域中私有终端节点的解析,Route 53 Resolver 转发规则除了 us-east-1.amazonaws.com 之外,还应包含 [s3.amazonaws.com](http://s3.amazonaws.com) 。
### 步骤 4. 测试通过私有连接访问远程 Amazon S3 存储桶
该解决方案部署后,任何向已配置的远程 AWS 区域中的 Amazon S3 发出请求的应用程序都将通过私有连接进行,从而避免了互联网以及私有子网产生的相关 NAT 处理费用。请观察下图:

*图 9: 终端使用 curl 通过私有连接从远程 AWS 区域存储桶获取数据*
现有应用程序无需更改即可体验到 [性能效率](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/networking-and-content-delivery.html) 的提升,未来的应用程序也将默认受益于这种优化架构。
## 注意事项
尽管此解决方案优化了 AWS 区域之间的 Amazon S3 访问,但在将跨区域依赖引入生产系统时要格外小心。要深入了解,请查阅 [AWS 多区域基础 (AWS Multi-Region Fundamentals)](https://docs.aws.amazon.com/whitepapers/latest/aws-multi-region-fundamentals/aws-multi-region-fundamentals.html) 白皮书。在大规模运营时,还应查看 [Route53 Resolver 终端节点](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver) 和 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) 的配额。
## 结论
在本文中,我们讨论了使用安全且高可用的 AWS 骨干网络将 [Amazon S3 的私有 DNS 支持](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#private-dns) 扩展到 AWS 各区域所带来的好处。通过 Amazon Route 53 Resolver 终端节点和相关的转发规则,可以解析远程的 [Amazon S3 接口终端节点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) ,从而使现有和未来的应用程序能够使用更安全、性能更高且成本更优化的路径。实现这一点无需应用程序感知或更改,从而为平台和云卓越中心 (CCoE) 团队简化了最佳实践的采纳过程。
---
### 关于作者

**Onyekachi Uchendu** 是 AWS 的一名企业高级解决方案架构师。他对技术充满热情,致力于帮助客户在 AWS 上探索各种可能性,以解决他们的业务挑战。他喜欢利用 AWS 服务设计高度可扩展、有弹性且经济高效的网络和安全解决方案。Onyekachi 喜欢旅行、踢足球和听各种类型的音乐。

**Abiola Babsalaam** 是 Amazon Web Services 的一名高级技术客户经理 (TAM),在网络架构、安全和大数据领域拥有广泛的专业知识。通过与客户的深入互动,Abiola 进行技术深度剖析和架构审查,提供符合 AWS Well-Architected 框架的规范性指导,并为复杂的 AWS 环境开发定制解决方案。
<!-- AI_TASK_END: AI全文翻译 -->