**发布时间:** 2025-11-07
**厂商:** AWS
**类型:** BLOG
**原始链接:** https://aws.amazon.com/blogs/networking-and-content-delivery/custom-domain-names-for-vpc-lattice-resources/
---
<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 为 VPC Lattice 资源配置自定义域名
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 解决方案分析
## 解决方案概述
该方案详细阐述了 **AWS VPC Lattice** 新增的**自定义域名**功能。VPC Lattice是一项全托管的应用网络服务,用于连接、保护和监控跨VPC和账户的服务通信。此项新功能允许资源所有者为一个VPC Lattice资源(如服务或资源集群)指定一个**完全限定域名(FQDN)**,从而使服务消费者能通过这个易于理解和使用的域名来访问资源,而无需处理由系统自动生成的复杂端点。
该方案旨在解决跨VPC/账户共享服务时的服务发现和访问难题,尤其适用于以下场景:
- **集群类资源**:如Kafka、缓存集群等,客户端需要通过特定域名访问集群中的单个节点。该功能允许为每个节点配置独立的自定义域名。
- **基于TLS的应用**:客户端必须使用与服务器证书匹配的域名来建立安全的TLS连接。自定义域名确保了TLS握手的成功。
- **使用AWS原生或第三方域名**:允许将AWS托管服务(如Amazon MSK)的自带域名直接用作Lattice资源的访问入口,简化了集成。
技术原理核心在于 **VPC Lattice 自动化的私有DNS管理**。当资源所有者配置自定义域名并与消费者VPC关联后,VPC Lattice会在消费者的VPC中自动创建并管理一个**私有托管区域 (Private Hosted Zone)**,将自定义域名解析到对应的Lattice资源端点,从而对消费者屏蔽了底层网络的复杂性。
## 实施步骤
该方案的实施涉及资源所有者、VPC所有者(消费者)和服务网络所有者三个角色,步骤清晰,控制分层。
1. **域名所有权验证 (资源所有者 - 可选但推荐)**
- **发起验证**:在VPC Lattice控制台为希望使用的域名(如 `example.com`)发起验证请求。
- **获取TXT记录**:VPC Lattice会生成一个唯一的TXT记录(名称和值)。
- **配置DNS**:资源所有者需将此TXT记录添加到其域名的公共DNS区域中(例如,在Amazon Route 53中创建一条TXT记录)。
- **完成验证**:VPC Lattice会自动检测该TXT记录。验证成功后,该域名及其所有子域名(如 `api.example.com`)在该AWS账户中都将被视为“已验证”。
2. **创建资源配置并指定域名 (资源所有者)**
- 创建资源配置时,为其指定一个自定义域名。
- 如果使用的是已验证的域名,需提供对应的**域名验证ID**,这会向消费者表明该域名的所有权已经过验证,增强了安全性。
- 对于未验证的域名(例如,用于开发测试或使用第三方域名),则无需提供验证ID。
3. **配置消费者访问与DNS解析 (VPC所有者 & 服务网络所有者)**
- **服务网络层控制 (服务网络所有者)**:将资源配置关联到服务网络时,必须**启用DNS主机名**。这是一个顶层开关,如果在此处禁用,则所有关联的VPC都无法通过域名解析该资源。
- **VPC层控制 (VPC所有者/消费者)**:在创建连接到服务网络的端点时,消费者可以进行更精细的DNS控制:
- **启用DNS名称**:决定是否允许VPC Lattice在该VPC中管理私有DNS区域。
- **私有DNS首选项**:设置安全策略,选项包括:
- `仅限已验证的域名` (默认):只为通过所有权验证的域名创建DNS记录。
- `所有域名`:为所有域名创建DNS记录。
- `仅限指定的域名`:只为白名单中的域名创建DNS记录。
- `已验证域名和指定域名`:组合策略。
- **指定域名列表**:如果选择了包含“指定域名”的策略,则需要提供一个允许的域名列表(支持通配符)。
## 方案客户价值
- **简化网络与DNS管理**
- 自动创建和管理私有DNS记录,**消除了手动配置和维护DNS的复杂性**,降低了因配置错误导致服务中断的风险。开发者可以更专注于应用逻辑而非底层网络设施。
- **提升应用兼容性与可移植性**
- 为**集群类应用**(如数据库、消息队列)提供了稳定的、节点可寻址的访问方式,解决了跨VPC访问集群的普遍痛点。
- 确保了**TLS应用**的无缝连接,客户端可以使用预期的域名进行证书验证,无需修改应用代码或证书配置。
- **增强安全与信任模型**
- **域名验证机制**为服务消费方提供了额外的安全保障,确保他们连接到的是由合法域名所有者提供的资源,防止域名冒用。
- 消费方可以通过精细化的DNS策略(如只允许连接到“已验证”的域名),来强化自身的安全边界和治理策略。
- **提高开发与部署灵活性**
- 同时支持**已验证**和**未验证**的域名,兼顾了生产环境的强安全需求和开发测试环境的便捷性与灵活性。
## 涉及的相关产品
- **Amazon VPC Lattice**: 解决方案的核心服务,提供应用层网络连接、安全和监控能力,并负责实现自定义域名功能。
- **Amazon Route 53**: 用于管理公共DNS区域,以完成域名所有权的TXT记录验证过程。
- **AWS PrivateLink**: 在文档的控制台导航路径中被提及,与VPC Lattice共同构成AWS的私有网络连接解决方案生态。
## 技术评估
- **优势**
- **高度集成与自动化**:该功能与VPC和DNS深度集成,实现了私有DNS的“零接触”式管理,将复杂的网络配置抽象化,极大降低了用户的运维负担。
- **精细化的安全控制**:提供了从服务网络所有者到VPC消费者的分层控制模型,并引入了域名验证机制。这种设计既保证了顶层治理,又赋予了消费方自主权,安全模型全面且灵活。
- **解决特定场景痛点**:针对集群应用和TLS应用的跨VPC访问问题,提供了原生且优雅的解决方案,这是传统网络方案(如VPC Peering + 手动DNS)难以高效实现的。
- **良好的扩展性**:验证一个根域名后,其所有子域名自动继承验证状态,非常适合拥有大量微服务并采用统一域名规范的大型企业。
- **可能的限制与注意事项**
- **配置的不可变性**:自定义域名和验证ID必须在资源配置创建时指定,**创建后无法修改**。这在需要变更服务域名的场景下可能缺乏灵活性,需要删除并重建资源配置。
- **域名冲突管理**:同一服务网络或资源组内不允许存在同名域名。此外,如果消费者VPC中已存在同名托管区域,Lattice将跳过创建,这可能导致非预期的解析行为,需要用户自行排查和解决冲突。
- **验证状态的动态性**:域名验证状态依赖于外部公共DNS记录的持续存在。如果TXT记录被意外删除,验证状态将变为“未验证”,可能会影响那些设置了“仅限已验证域名”策略的消费者的服务访问。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 为 VPC Lattice 资源配置自定义域名
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/custom-domain-names-for-vpc-lattice-resources/](https://aws.amazon.com/blogs/networking-and-content-delivery/custom-domain-names-for-vpc-lattice-resources/)
**发布时间:** 2025-11-07
**厂商:** AWS
**类型:** BLOG
---
Amazon VPC Lattice 是一项完全托管的应用程序网络服务,可帮助您连接、保护和监控您的服务与资源之间在 VPC 和账户内部及跨 VPC 和账户的通信。今天,我们正式发布 Lattice 资源的自定义域名功能。在本文中,我们将详细探讨这一新功能。
资源所有者现在可以在与其他 VPC 和账户中的消费者共享 Lattice 资源之前,为其指定一个全限定域名 (Fully Qualified Domain Name, FQDN) 作为自定义域名。消费者随后便可以使用此 FQDN 访问该资源。VPC Lattice 会在消费者的 VPC 中管理一个私有托管区域 (private hosted zone),使客户端能够使用自定义域名连接到资源。资源所有者可以灵活地使用自己拥有的域名,也可以使用非自己拥有的域名,例如 Amazon 提供或第三方提供的域名。消费者则可以选择允许 VPC Lattice 在其 VPC 中为哪些类型的域名管理私有托管区域。
在本文的后续部分,我们将首先介绍该功能的使用场景,并通过示例说明其工作原理。
## 前提条件
本指南假设您已了解 VPC Lattice 的基础知识。如果您需要背景信息,请在继续之前查阅 [VPC Lattice 用户指南](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html) 。
**关键使用场景**
资源的自定义域名功能通过解决几个重要的新使用场景,扩展了 VPC Lattice 的能力:
- **基于集群的资源**:客户现在可以使用资源配置来跨 VPC 和账户边界共享和访问基于集群的资源,例如缓存集群、Kafka 集群等。要访问基于集群的资源,客户端需要了解集群拓扑并能够查询集群中的特定节点。借助此功能,集群所有者可以为集群中的每个节点指定一个自定义域名,从而使客户端能够直接识别和查询单个节点。
- **基于 TLS 的应用程序**:客户现在可以使用资源配置来共享和访问基于 TLS 的应用程序。在传输层安全 (Transport Layer Security, TLS) 协议中,客户端必须使用服务器能够为其提供有效证书的域名进行连接。借助此功能,资源所有者可以在资源配置中将所需的域名指定为自定义域名,从而确保客户端的 TLS 连接无缝进行。
- **Amazon 提供或第三方拥有的域名**:客户现在可以共享其域名由 Amazon 或第三方提供的资源。AWS 原生资源的终端节点通常采用 `example.amazonaws.com` 或 `example.aws` 的形式。借助此功能,资源所有者可以通过创建资源配置并将 Amazon 提供的终端节点指定为自定义域名来共享此类资源。例如,一个 Amazon MSK 集群可能有多个代理终端节点,如 `b-1.example-cluster.abc123.c2.kafka.us-east-1.amazonaws.com` 和 `b-2.example-cluster.abc123.c2.kafka.us-east-1.amazonaws.com`。资源所有者可以为每个代理终端节点创建资源配置,将 MSK 提供的域名指定为自定义域名,从而使消费者能够使用 AWS 提供的终端节点连接到特定的 Kafka 代理。
- **增强的安全态势**:资源所有者可以使用已验证和未验证的自定义域名。已验证域名是指其所有权已由 AWS 验证的域名,确保给定域名仅由其合法所有者使用。它们为消费者提供了增强的安全态势。未验证域名则为开发场景或使用 Amazon/第三方域名时提供了灵活性。这种双重方法在为生产工作负载保持强大安全控制的同时,也为开发和测试环境提供了灵活性。
现在,让我们来了解一下实现此功能的重要 VPC Lattice 组件。
## 域名验证简介
域名验证 (Domain Verification) 是一个证明您对某个域名 (例如 example.com) 拥有所有权的过程,该域名您希望用作资源配置的自定义域名。例如,如果您是 Example Organization 的一员,您的资源和应用程序终端节点遵循 `abc.example.com` 或 `xyz.example.com` 等模式。因此,您可能希望使用以 ‘example.com’ 结尾的 FQDN (全限定域名,指定了在 DNS 层级结构中确切位置的完整域名) 作为您资源配置的自定义域名。域名验证简化了这一过程。
一个域名验证对象包含两个关键属性:域名及其验证状态。
验证过程:当您为一个域名发起验证时,VPC Lattice 会自动创建一个状态为“待处理” (pending) 的域名验证对象,并返回一个包含 (名称, 值) 对的 TXT 记录配置。为了证明您对该域名的所有权,您必须在您域名的 DNS 区域中使用此键值对创建一个 TXT 记录。VPC Lattice 会检查该 TXT 记录是否与返回的记录匹配。验证成功后,域名验证的状态将变为“已验证” (verified)。
与资源配置集成:资源配置会反映其自定义域名的验证状态。当您使用已验证的域名 (如 example.com) 来描述一个资源配置时,您会看到验证状态作为该资源配置的一个属性。
子域名继承:一旦您验证了一个域名,其所有子域名都会被自动视为已验证。例如,在验证 `example.com` 之后,您可以立即使用 `abc.example.com` 和 `def.xyz.example.com` 等 FQDN 作为您账户中资源配置的自定义域名,无需额外验证。
### 配置步骤
以下示例展示了验证过程。
#### 步骤 1:启动域名验证
要从 AWS 管理控制台启动域名验证,请导航至 VPC 菜单,选择“域名验证” (Domain Verifications),然后点击“启动域名验证” (Start domain verification)。

图 1 展示了如何使用 AWS 管理控制台启动域名验证流程
要检查验证状态,请导航至 Lattice 和 PrivateLink 菜单下的“域名验证” (Domain Verification),您将看到需要添加到 DNS 区域的 TXT 记录名称和值。

图 2: AWS 管理控制台上的域名验证状态
#### 步骤 2:创建 TXT 记录
将此名称-值对作为 TXT 记录添加到您域名的 DNS 区域中以证明所有权。VPC Lattice 随后会将域名验证状态更新为“已验证”。状态变更可能需要几个小时才能完成。

图 3: 展示了如何为 Route53 托管区域创建 TXT 记录
### 工作原理
现在我们已经了解了域名验证,让我们通过一个端到端的工作流程来了解,该流程涵盖三个角色:资源所有者、消费者 (VPC 所有者) 和服务网络所有者。
### 资源所有者体验
#### 步骤 1 (可选):验证您的域名
作为资源所有者,您可以灵活地使用已验证或未验证的域名。验证状态对与您共享资源配置的消费者是可见的。对于已验证的域名,您需要一个状态为“已验证”的域名验证对象。请准备好域名验证 ID 以备下一步使用。
#### 步骤 2:创建资源配置
当创建类型为“单个” (Single) 且带有自定义域名的资源配置时:
- 对于已验证域名:在资源配置中提供域名验证 ID。
- 对于未验证域名:如果您使用的是 Amazon 提供的域名、您不拥有的第三方域名或您尚未验证的域名,请将 ID 字段留空。在这种情况下,资源配置将反映为“未验证” (unverified) 状态。

图 4: 展示了如何为资源配置指定自定义域名和验证 ID
### “组” (Group) 和“子” (Child) 类型的资源配置
类型为“组”的资源配置没有自定义域名,但它决定了其子配置的自定义域名。您首先在组上定义一个“组域名” (Group Domain)。随后,您可以为每个子配置指定一个作为该组域名子域的自定义域名。
当使用已验证域名时,您只需提供与组域名对应的域名验证 ID。此域名验证会自动应用于每个子配置。
#### 步骤 1:创建资源配置组
首先创建将包含您的子配置的组:
- 打开 Amazon VPC 控制台
- 导航至 **PrivateLink 和 Lattice** 下的**资源配置** (Resource configurations)
- 点击**创建资源配置** (Create Resource configuration)
- 为您的组输入一个唯一的名称
- 选择**资源组** (Resource group) 作为配置类型
- 为该组输入**组域名** (Group Domain Name)

图 5: 展示了如何创建组资源配置并指定组域名
#### 步骤 2:为子资源配置指定自定义域名

图 6: 创建子资源配置并指定自定义域名
### VPC 所有者
作为消费者,您可以从您的 VPC 和/或本地网络访问与您共享的资源配置。为此,您必须首先将资源配置连接到您的 VPC,可以直接使用资源终端节点 (Resource Endpoint, RE),也可以将资源配置放入服务网络中,然后使用服务网络终端节点 (Service Network Endpoint, SN-E) 或服务网络关联 (Service Network Association, SN-A) 将服务网络连接到您的 VPC。请参阅 [了解 VPC Lattice 组件](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html) 部分以了解有关 RE、SN-E 和 SN-A 的更多信息。
无论您选择哪种连接方法,您都有三个控件来配置希望 VPC Lattice 在您的 VPC 中管理私有托管区域的域名类型。
控制台中的第一个控件是“启用 DNS 名称” (Enable DNS Names),它告诉 VPC Lattice 在您的 VPC 中管理私有托管区域。如果您不启用 DNS 名称,则不会创建任何区域。在 CLI 和 API 中,此控件称为 `private-dns-enabled`。
启用 DNS 名称后,您可以使用第二个控件“私有 DNS 首选项” (Private DNS preferences) 来配置您希望允许创建区域的域名类型。您可以选择以下几个选项:
- “所有域名” (All domains) (VPC Lattice 为所有自定义域名管理私有托管区域)、“仅限已验证域名” (Verified domains only) (VPC Lattice 仅为已验证的自定义域名管理私有托管区域)、
- “仅限指定域名” (Specified domains only) (VPC Lattice 仅在自定义域名位于您允许的域名列表中时才管理私有托管区域),以及
- “已验证域名和指定域名” (Verified domains and specified domains) (VPC Lattice 在自定义域名已验证或位于您允许的域名列表中时管理私有托管区域)。默认选项是“仅限已验证域名”。
如果您选择“仅限指定域名”或“已验证域名和允许的域名”,您可以使用第三个控件“指定域名” (Specified domains) 来提供您希望允许的域名列表。您可以在指定的域名列表中使用通配符。
### 服务网络所有者
作为服务网络所有者,您有一个“启用 DNS 名称”控件,它会覆盖 VPC 所有者为其 SN-E 或 SN-A 配置的“启用 DNS 名称”控件。在创建服务网络资源关联以将资源配置添加到服务网络时,您必须为该资源配置启用 DNS 名称。如果您不启用 DNS 名称,即使 SN-E 或 SN-A 已经启用了 DNS 名称,VPC Lattice 也不会在该服务网络连接的任何 VPC 中为该资源配置管理私有托管区域。这创建了一个分层控制结构,其中服务网络设置作为顶层控件,覆盖了 VPC 级别的设置。
#### 步骤 1:从 VPC 控制台:
- 导航至 Lattice 服务网络
- 选择您的服务网络
- 转到资源关联选项卡
- 点击创建资源关联
- 选择您的资源配置
- 启用主机名
- 创建关联。

图 7: 服务网络创建和启用 DNS 名称
#### 步骤 2:从 VPC 控制台:
- 导航至终端节点
- 点击创建终端节点
- 选择 VPC Lattice 服务网络作为服务类别
- 选择您的服务网络和 VPC
- 配置网络设置
- 创建终端节点。

图 8: 展示了创建资源终端节点时的三个控件
### 注意事项
域名验证:多个 AWS 账户可以验证同一个域名的所有权。VPC Lattice 会定期检查您 DNS 区域中的 TXT 记录。如果 TXT 记录被删除,与该域名对应的域名验证将切换到“未验证”状态。所有使用该域名验证的子域名和资源配置都将继承此“未验证”状态。
资源配置要求:自定义域名和域名验证 ID 必须在创建资源配置时指定。资源配置创建后无法修改以添加自定义域名或域名验证 ID。
组域名:如果您希望 VPC Lattice 在消费者 VPC 中创建私有托管区域,则组资源配置需要一个组域名。如果您不指定组域名,您仍然可以为每个子配置指定自定义域名。与您共享该组资源配置的消费者可以发现这些自定义域名,但 VPC Lattice 不会在消费者 VPC 中为它们管理私有托管区域。
域名冲突:多个资源配置可以拥有相同的自定义域名。但是,两个具有相同自定义域名的资源配置不能被添加到同一个服务网络中,也不能作为同一个组的子资源配置。如果一个 VPC 中已经存在某个域名的托管区域,那么 VPC Lattice 将跳过在该 VPC 中为其他具有相同自定义域名的资源创建私有托管区域。
### 结论
VPC Lattice 资源配置的自定义域名功能允许客户在 VPC Lattice 中共享和访问资源,例如集群和 TLS 应用程序。通过消除手动 DNS 配置步骤,此功能使您能够专注于构建和部署应用程序,而不是管理 DNS 基础设施。域名验证提供了一种可扩展的方法来证明域名的所有权。自动创建私有托管区域则简化了资源的访问。
这一增强功能巩固了 VPC Lattice 的核心价值主张——简化应用程序网络,使开发人员能够专注于构建和部署应用程序。无论您运行的是数据库、集群还是其他资源,自定义域名都能减少基础设施管理的开销。
该功能已在所有提供 VPC Lattice 的 AWS 区域可用。欲了解更多信息,请访问 [VPC Lattice 文档](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html) 或查阅 [VPC Lattice 入门指南](https://aws.amazon.com/vpc/lattice/getting-started/) 。

### Ashish Kumar
Ashish Kumar 是 AWS 的一名高级产品经理 (技术),常驻旧金山湾区。他负责管理虚拟私有云和应用程序网络领域的高级云服务,例如 AWS PrivateLink、VPC Lattice 和 Elastic Load Balancing。Ashish 拥有印度理工学院古瓦哈提分校的学士学位以及美国圣母大学的 MBA 和商业分析硕士学位。

### Natti Swaminathan
Natti 是 AWS 美国联邦民事团队的首席解决方案架构师。他与客户密切合作,构建和设计关键任务解决方案。Natti 在领导、架构和实施满足多样化业务需求的高影响力技术解决方案方面拥有丰富的经验。他拥有威奇托州立大学的电气与计算机工程硕士学位以及北卡罗来纳州立大学的 MBA 学位。
<!-- AI_TASK_END: AI全文翻译 -->