<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 通过 Amazon VPC Lattice 和 VPC 资源管理 DNS 解析
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
Amazon VPC Lattice 和 VPC 资源的功能更新旨在简化企业网络架构中的服务通信管理,特别是 DNS 解析和连接模式。该功能的核心是通过 **VPC Lattice 服务网络** 和 **VPC 资源** 支持直接 TCP 连接,消除对 **AWS Network Load Balancers (NLBs)** 的依赖。技术原理基于 AWS 生成的全局唯一域名和 Hosted Zone 配置,实现服务端点发现和路由。
背景源于 re:Invent 2024 的发布,解决多模式服务间通信的痛点,如跨区域和混合环境连接。目标用户群包括大型企业网络管理员和开发人员,市场定位聚焦于现代化网络架构,适用于云原生应用和混合部署场景。
## 关键客户价值
- **简化网络管理**:通过自动化 DNS 配置和别名记录,减少手动干预,提升服务发现效率,与传统 IaaS 架构相比,显著降低运维复杂性,但需注意大规模组网时可能增加配置开销。
- **提升连接灵活性**:支持跨区域和混合访问(如 on-premises 环境),使客户能够从外部或跨 Region 消费服务,相比竞品如 Azure Private Link,提供更无缝的 VPC 关联模式,实现资源共享和动态路由。
- **成本优化**:消除 NLBs 需求,潜在降低基础设施成本;在突发流量场景中,结合自动扩缩容策略,改善资源利用率,但冷启动问题可能影响实时响应。
## 关键技术洞察
- **技术独特性**:基于 **AWS PrivateLink** 和 **VPC Lattice** 的新数据平面,支持 **Resource Configuration** 类型(如 Single、Group 或 Child),通过 AWS 生成的域名(e.g., 169.254.171.x/24 IPv4 范围)实现非全局路由地址解析,核心工作原理是将服务映射到隐藏入口端点,确保私有通信。
- **创新点与影响**:创新在于端点共享机制(如单个端点访问多个服务),提升性能和可用性,但可能增加安全性风险;IPv6 支持 fd00:ec2:80::/64 范围,优化了混合访问的兼容性,对安全性影响包括启用 **denyAllIgwTraffic** 标志,限制公共流量。
- **挑战与解决方式**:配置复杂性较高,如需通过 AWS CLI 命令(e.g., `aws vpc-lattice get-service --service-identifier svc-XXXX`)自动化检索 DNS 信息;挑战包括动态 IP 变化导致的连接中断,可通过 **Amazon Route 53 Profiles** 解决 DNS 自动化问题,但需结合原文建议避免静态配置。
## 其他信息
- 在多账户环境中,可通过 **AWS Resource Access Manager (AWS RAM)** 共享 **VPC Lattice 服务网络** 和资源配置,进一步优化跨账户访问。
- 建议优先使用 **VPC Lattice 服务网络关联** 作为主要访问方法,以减少端点扩散和提升安全性控制。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 使用 Amazon VPC Lattice 和 VPC 资源管理 DNS 解析
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/managing-dns-resolution-with-amazon-vpc-lattice-and-vpc-resources/](https://aws.amazon.com/blogs/networking-and-content-delivery/managing-dns-resolution-with-amazon-vpc-lattice-and-vpc-resources/)
**发布时间:** 2025-05-29
**厂商:** AWS
**类型:** BLOG
---
在之前的帖子 [External Connectivity to Amazon VPC Lattice](https://aws.amazon.com/blogs/networking-and-content-delivery/external-connectivity-to-amazon-vpc-lattice/) 中,我们讨论了如何让应用程序从 Amazon Web Services (AWS) 外部的客户端消费 [VPC Lattice 服务](https://docs.aws.amazon.com/vpc-lattice/latest/ug/services.html),以及跨 [Region (Region)](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) 模式。在 re:Invent 2024 上,AWS 在应用网络空间发布了三个重大更新:为 [AWS PrivateLink (AWS PrivateLink)](https://aws.amazon.com/privatelink/) 发布 [VPC 资源 (VPC resources)](https://aws.amazon.com/about-aws/whats-new/2024/12/access-vpc-resources-aws-privatelink/) 功能、支持通过 [Amazon VPC Lattice (Amazon VPC Lattice)](https://aws.amazon.com/about-aws/whats-new/2024/12/vpc-lattice-tcp-vpc-resources/) 访问这些资源,以及创建 [VPC Lattice 服务网络的端点 (endpoints for VPC Lattice service networks)](https://docs.aws.amazon.com/vpc-lattice/latest/ug/vpc-interface-endpoints.html) 功能。
这些更新为多模式服务间通信提供了额外功能和简化机会。尽管新连接模式已在 [Amazon VPC Lattice: 现代化并简化您的企业网络架构 (Amazon VPC Lattice: modernize and simplify your enterprise network architectures)](https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-vpc-vattice-modernize-and-simplify-your-enterprise-network-architectures/) 帖子中详细说明,我们希望更深入讨论以下几点:
1. 这些新组件的实现对服务端点发现有什么影响?
2. 我该如何配置 DNS 解析来消费我的服务/资源?
在本帖子中,我们重点介绍如何获取 VPC Lattice 服务和 VPC 资源的 AWS 生成域名配置,以及如何为您的消费者正确配置 DNS 解析。
准备好了吗?
## 简要回顾:VPC Lattice 服务网络 VPC 关联如何工作?
我们从对 VPC Lattice 的回顾开始,使用图 1 中的架构。这显示了一个直接与服务网络关联的消费者 VPC(re:Invent 2024 之前的标准架构)。
当您创建 VPC Lattice 服务时,会提供一个 AWS 生成的 DNS 名称来表示它。这个名称在全球唯一且可外部解析为一系列 IP 地址,范围为 **169.254.171.x/24** 和 **fd00:ec2:80::/64**。IPv4 链路本地和 IPv6 唯一本地地址不可全球路由,仅适用于连接到同一物理(或逻辑)链路或更有限区域/站点的设备。在 AWS 中,当消费者 VPC 中的应用程序将 VPC Lattice 服务解析为这些地址时,向该地址发送的数据包会被路由到 VPC Lattice 的隐藏入口端点。

图 1. VPC Lattice 服务网络 VPC 关联。
许多用户希望使用自定义域名来引用这些服务。要配置此功能,您需要创建一个虚荣/伪装记录,表示 VPC 生成的域名。您必须从 VPC Lattice 服务配置中检索此信息:**Domain Name** 和 **Hosted Zone** 值。
图 2 显示了在 AWS 控制台中的情况,图 3 显示了使用 AWS Command Line Interface (AWS [CLI (CLI)](https://aws.amazon.com/cli/)) 的输出。

图 2. VPC Lattice 服务信息(控制台)。
`aws vpc-lattice get-service --service-identifier svc-XXXX --region YYY`

图 3. VPC Lattice 服务信息(CLI)。
这些值允许您在您控制的 DNS 区域中创建一个 [Alias record (Alias record)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html),可能是 AWS 中的 [Private Hosted Zone (PHZ)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)。如果您在 [DNS Zone apex (DNS Zone apex)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html) 创建 Alias 记录,则需要 Hosted Zone 值。
## 通过关联和端点访问 VPC 资源
回顾完成,现在我们来探讨新内容。
VPC 资源在 AWS 中提供了一个新数据平面,其中端点如 [AWS Databases](https://aws.amazon.com/products/databases/)、[Amazon Elastic Compute Cloud (Amazon EC2) (Amazon EC2)](https://aws.amazon.com/ec2/) 实例、域名目标和 IP 地址可以被访问。PrivateLink 和 VPC Lattice 现在都支持直接 TCP 连接到端点。这消除了对 [AWS Network Load Balancers (NLBs)](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html) 的需求。我们不会在这里详细说明 VPC 资源的工作原理,建议您查看 [Jeff Barr’s News post (Jeff Barr’s News post)](https://aws.amazon.com/blogs/aws/securely-share-aws-resources-across-vpc-and-account-boundaries-with-privatelink-vpc-lattice-eventbridge-and-step-functions/) 以了解新功能概述。
然而,在讨论 DNS 解析前,我们可以总结一些重要概念:
1. 资源定义:VPC 资源通过创建 [Resource Configuration (Resource Configuration)](https://docs.aws.amazon.com/vpc/latest/privatelink/resource-configuration.html) 定义,可以是:
1. Single(单个资源,目标类型为 DNS 或 IP)
2. Group(一组子资源配置集合)
3. Child(组内的对象,共享相同配置)
4. ARN(访问支持的 AWS 资源)。
2. 资源关联:VPC 资源可以使用三种方法暴露:
1. 与类型为 “[resource]” 的 Interface 端点关联
2. 与类型为 “[service network]” 的 Interface 端点关联
3. 与 VPC Lattice [服务网络 (service network)](https://docs.aws.amazon.com/vpc-lattice/latest/ug/service-network-associations.html#service-network-resource-config-associations) 关联
## 访问方法的 DNS 解析
随着 VPC 资源和新端点类型的发布,现在有多种方式连接到 VPC Lattice 服务和 VPC 资源。下表 1 详细说明了这些选项:

表 1. 连接映射。
在本节中,我们探讨这些不同实体和访问方法的 DNS 解析工作方式。请注意,从 VPC Lattice 服务网络关联连接到 VPC Lattice 服务(前表第一列,第一行)已经在本帖子开头部分介绍。
### 通过 VPC Lattice 服务网络 VPC 关联访问 VPC 资源
在此配置中,一个消费者 VPC 与一个也关联了 VPC 资源的服务网络关联。这种 VPC 资源发布方式与 VPC Lattice 服务有何不同?
如前所述,每个资源关联到服务网络都会创建一个全球唯一且可外部解析的域名,以及一个 Hosted Zone ID。根据 Resource Configuration 类型,您会发现一些差异:
- Child 资源(无论是否在 Group 中)都有自己的解析配置
- ARN 资源会创建一个托管的 Child 资源配置,这是针对资源本身的
VPC Lattice 服务和 VPC 资源 DNS 解析的一个关键区别在于使用的 IP 地址空间。用于资源连接的 IPv4 地址来自公共 [129.224.0.x/17](https://docs.aws.amazon.com/vpc/latest/privatelink/resource-configuration.html#service-network-types) 范围。对于 IPv6,地址来自 fd00:ec2:80::/64 范围——两者都用于 VPC Lattice 服务和 VPC 资源。

图 4: VPC Lattice 服务网络 VPC 关联(VPC 资源关联)。
要为生成的域名设置任何别名,如之前所述,我们需要检索关联的域名和 Hosted Zone ID。对于示例,我们使用 ARN 类型 Resource Configuration。首先,如图 5 所示,创建了两个 Resource Configurations:
- 类型为 ARN 的条目是“父”项,类似于创建 Group 类型 Resource Configuration。
- Child 条目是提供我们所需 DNS 信息的资源。
从控制台,选择 **Child resource name** 以获取图 6 中显示的信息。

图 5. Resource Configuration ARN 类型(控制台视图)。

图 6. VPC 资源关联 – Child – 信息(控制台)。
如果您更喜欢使用 AWS CLI,则使用资源关联 ID (snra-x…) 可以获取设置别名所需的 DNS 信息,通过以下命令:
`aws vpc-lattice get-service-network-resource-association --service-network-resource-association snra-XXX --region YYY`

图 7. VPC 资源关联信息 – 选项 1(CLI)。
对于 ARN 类型,您可能没有资源关联 ID(因为 Child 是生成的,而不是由您创建)。您可以通过对父 Resource Configuration 的 ID 执行一些额外操作来获取所需信息。具体来说,您需要查询服务网络的所有资源关联,使用以下过滤器:
- 值 ‘resourceConfigurationName’ 以父资源 Resource Configuration ID 开头。
- 值 ‘isManagedAssociation’ 等于 true。
`aws vpc-lattice list-service-network-resource-associations --service-network-identifier sn-XXX --region YYY --query 'items[?isManagedAssociation==`true`]|[?starts_with(resourceConfigurationName,`rcfg-ZZZZZ`)==`true`]' `

图 8. VPC 资源关联信息 – 选项 2(CLI)。
消费者 VPC 中的 DNS 配置保持一致:只需在您控制的 DNS 区域中创建一个 ALIAS 记录,引用全球唯一记录(Domain Name 和 Hosted Zone ID)。
### 通过 VPC Lattice 服务网络端点访问 VPC Lattice 服务和 VPC 资源
如前所述,VPC Lattice 服务和 VPC 资源现在可以通过 VPC Lattice 服务网络端点访问。这些端点现在可以在关联的 VPC 之外工作,支持来自本地环境和跨 Region 应用程序的连接。这些端点支持 IPv4、IPv6 和双栈寻址。对于 IPv6 地址,[denyAllIgwTraffic (denyAllIgwTraffic)](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_NetworkInterface.html) 标志已启用,这意味着端点仅用于私有通信。
一个典型的混合模型如图 9 所示。

图 9. VPC Lattice 服务网络端点(混合和跨 Region)。
如果您熟悉 [interface VPC endpoints (interface VPC endpoints)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html),我们来讨论一些差异:
- 对于类型为 ‘service network’ 的 Interface Endpoints,您无需为每个服务/资源创建一个端点来连接。所有关联的服务/资源都可以从单个端点访问。
- 每个端点每个子网/可用区 (AZ) 可以消费多个 /28 IPv4 和 /80 IPv6 范围。从这个范围中,多个 VPC Lattice 服务可能消费并共享单个辅助 IP 地址,而每个 VPC 资源消费独立的辅助 IP 地址。
这意味着接口的主接口 IP 地址不能用于路由服务或资源流量。它们必须解析为其各自的辅助 IP 地址。
为每个关联到服务网络的服务/资源都会创建一个新的全球唯一且可外部解析的域名。这些域名提供每个服务/资源从辅助范围中消费的 IP 地址。您可以在控制台中查看这些域名,在端点的 **Associations** 选项卡中。

图 10. VPC Lattice 服务网络端点关联(控制台)。
`aws ec2 describe-vpc-endpoint-associations --vpc-endpoint-ids vpce-XXX --region YYY `

图 11. VPC Lattice 服务网络端点关联(CLI)。
有了这些信息,您可以根据用例和消费者应用程序位置更新 DNS 解析配置:
- 对于位于另一个 AWS Region 的应用程序(多 Region 连接),您可以在那些 VPC(s) 关联的 [Private Hosted Zone (Private Hosted Zone)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) 中配置(使用 Alias 记录配置)。
- 对于位于本地环境的应用程序(混合连接),我们推荐遵循 [Hybrid DNS with Route 53 Resolver Endpoints (Hybrid DNS with Route 53 Resolver Endpoints)](https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/hybrid-dns_route53-resolver-endpoint-ra.pdf) 参考架构。
### 通过 PrivateLink 接口端点访问 VPC 资源
如果您不使用 VPC Lattice,则可以使用更传统的 PrivateLink 接口访问 VPC 资源。如前所述,有一个新的接口类型:类型为 “resource” 的 Interface 端点。

图 12. 通过 PrivateLink 资源端点访问 VPC 资源。
在以下配置中,一个 **VPC 资源** 类型为 **Single** 已创建,并与 [Resource Gateway (Resource Gateway)](https://docs.aws.amazon.com/vpc/latest/privatelink/resource-gateway.html) 关联。一个 **Resource 端点** 也已部署并与 **Resource Configuration** 关联。

图 13. 通过 PrivateLink 资源端点访问 VPC 资源(控制台)。
查看图 14 中显示的此端点的 IP 寻址。只有两个 IP 地址(每个可用区 (AZ) 一个)。这在概念上类似于 PrivateLink 端点的一般工作方式。

图 14. VPC 端点(资源)寻址。
**VPC 资源** 的自动生成 DNS 名称可以在端点关联级别检索。从控制台,我们需要在 **Endpoint** 的 **Associations** 选项卡中查看,如图 15 所示。如果使用 CLI,则可以查看图 16 以了解如何获取信息。

图 15. VPC 资源命名(控制台)。
`aws ec2 describe-vpc-endpoint-associations --vpc-endpoint-ids vpce-XXX --region YYY `

图 16. VPC 资源命名(CLI)。
要添加虚荣/伪装名称,您可以在合适的 [Private Hosted Zone (Private Hosted Zone)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) 中创建一个别名记录,别名指向自动生成的 DNS 名称,并指定 Hosted Zone ID。
## 从外部应用程序访问服务
到目前为止,我们已经涵盖了表 1 中记录的五种连接模式。但是,您可能遗漏了一个:如何从 AWS 外部的消费者无私有通信访问服务/资源。随着新服务/资源的添加,用于连接它们的 IP 地址可能会更改。因此,我们的观点是,使用一个入口代理层来代表您的服务和资源执行动态查找和解析会更清晰。没有这个动态层在您的流量前端,您需要额外的步骤来发现端点辅助 IP 地址信息并动态更新任何静态配置。
您选择的解决方案可以是完全拥有的(如我们之前的帖子中讨论的),或涉及合作伙伴产品。对于 VPC Lattice 服务,使用 [Amazon API Gateway (Amazon API Gateway)](https://aws.amazon.com/api-gateway/) 进行入口代理也是可能的,如 [Amazon Containers post (Amazon Containers post)](https://aws.amazon.com/blogs/containers/securing-api-endpoints-using-amazon-api-gateway-and-amazon-vpc-lattice/) 中讨论的。
查看 [Guidance for External Connectivity to Amazon VPC Lattice (Guidance for External Connectivity to Amazon VPC Lattice)](https://aws.amazon.com/solutions/guidance/external-connectivity-to-amazon-vpc-lattice/),以获取使用 [NLB (NLB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 针对 [AWS Fargate (AWS Fargate)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) 上的一组轻量级无服务器代理的完全自动化解决方案。

图 17. 由外部应用程序消费的 VPC Lattice 服务和 VPC 资源。
随着 VPC Lattice 服务网络端点的发布,此解决方案可以进一步优化。之前,入口解决方案 VPC 与其关联的服务网络之间存在 1:1 映射关系。选择使用端点而不是 VPC 关联允许此入口代理解决方案用于访问 Region 中的任何服务网络!
PrivateLink 资源端点允许您删除代理解决方案的需求,并直接从 ELB 针对端点。在规模化时,我们仍然推荐使用 VPC Lattice 服务网络,作为控制服务/资源连接性和安全性的单一位置,并减少端点扩展。
## 我们知道,您需要一个总结
下表总结了为不同暴露实体类型推荐的访问模式。

表 2. 通过 VPC Lattice 或 VPC 端点访问模式的总结。
## 进一步考虑
- 将 VPC Lattice 服务网络关联视为 VPC Lattice 服务和 VPC 资源访问的主要方法。这简化了连接需求,并创建了 VPC 与其预期用途之间的强映射。
- 对于多维度用例,如拆分功能 VPC、混合和外部访问通过代理层,使用 VPC Lattice 服务网络端点。
- 当您主要是 PrivateLink 用户且没有立即扩展访问服务的计划时,使用 PrivateLink 资源端点。
- 在多账户环境中,您可以通过 [AWS Resource Access Manager (AWS Resource Access Manager)](https://docs.aws.amazon.com/vpc-lattice/latest/ug/sharing.html) 共享以下资源:VPC Lattice 服务网络、VPC Lattice 服务和 VPC 资源配置。
- 在规模化工作时,我们推荐以下与 DNS 解析配置相关的内容:
- 自动化 DNS 配置,以避免每次创建/删除新 VPC Lattice 服务或 VPC 资源时出现瓶颈。 [Guidance for Amazon VPC Lattice Automated DNS Configuration on AWS (Guidance for Amazon VPC Lattice Automated DNS Configuration on AWS)](https://aws.amazon.com/solutions/guidance/amazon-vpc-lattice-automated-dns-configuration-on-aws/) 提供了一个可用于自动化这些 DNS 配置的解决方案。
- 使用 [Amazon Route 53 Profiles (Amazon Route 53 Profiles)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/profiles.html) 来简化 Private Hosted Zones 与消费者 VPC 的关联。
- 您可以使用 [sigV4 signing (sigV4 signing)](https://docs.aws.amazon.com/vpc-lattice/latest/ug/sigv4-authenticated-requests.html) 为 VPC Lattice 服务应用粒度安全。对于位于 AWS 外部的应用程序,考虑使用 [IAM Roles Anywhere (IAM Roles Anywhere)](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) 来获取必要凭证。
## 结论
在本帖子中,我们回顾了消费 VPC Lattice 服务和 VPC 资源的不同连接模式,重点关注如何从同一 AWS Region、跨 Region 和本地环境的 VPC 中获取和配置必要的 DNS 解析。我们提供了关于如何思考新 AWS 功能以及在哪里和如何部署和访问它们的指导。
访问 Amazon VPC Lattice [产品页面 (product page)](https://aws.amazon.com/vpc/lattice/)、[文档 (documentation)](https://docs.aws.amazon.com/vpc-lattice/) 和 [定价页面 (pricing page)](https://aws.amazon.com/vpc/lattice/pricing/) 以获取更多信息。
## 关于作者

### Adam Palmer
Adam 是 AWS 的首席网络解决方案架构师。在此之前,Adam 在金融服务行业担任架构师;专注于网络、VMware、Microsoft 平台和端用户计算解决方案。在业余时间,他可以被发现在天气良好的地方攀登山峰!

### Pablo Sánchez Carmona
Pablo 是 AWS 的高级网络专家解决方案架构师,在那里他帮助客户设计安全、弹性和经济高效的网络。当不谈论网络时,Pablo 可以被发现在打篮球或玩电子游戏。他拥有瑞典皇家理工学院 (KTH) 的电气工程硕士学位,以及加泰罗尼亚理工大学 (UPC) 的电信工程硕士学位。
<!-- AI_TASK_END: AI全文翻译 -->