

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 什么是 Amazon VPC Lattice？
<a name="what-is-vpc-lattice"></a>

Amazon VPC Lattice 是一项完全托管的应用程序网络服务，用于连接、保护和监控应用程序的服务和资源。您可以将VPC Lattice与单个虚拟私有云 (VPC) 配合使用，也可以通过一个或多个账户跨多个虚拟私 VPCs 有云 (VPC) 使用。

现代应用程序可以由多个小型模块化组件组成，这些组件通常被称为*微服务*，例如 HTTP API，数据库等资源，以及由 DNS 和 IP 地址端点组成的自定义资源。虽然现代化有其优势，但当你连接这些微服务和资源时，它也可能带来网络复杂性和挑战。例如，如果开发人员分散在不同的团队中，他们可能会跨多个账户构建和部署微服务和资源，或者 VPCs。

在 VPC Lattice 中，我们将微服务称为*服务*，仅将资源表示为*资源*配置。这些是您在VPC Lattice用户指南中看到并将使用的术语。

**Topics**
+ [关键组件](#vpc-service-network-components-overview)
+ [角色和责任](#roles-and-responsibilities)
+ [功能](#vpc-service-network-features)
+ [访问 VPC Lattice](#accessing)
+ [VPC 莱迪思服务终端节点](#service-endpoints)
+ [定价](#pricing)

## 关键组件
<a name="vpc-service-network-components-overview"></a>

要使用 Amazon VPC Lattice，您应该熟悉其关键组件。

**服务**  
一种可独立部署的软件单元，用于提供特定的任务或函数。服务可以在 EC2 实例或ECS/EKS/Fargate容器上运行，也可以作为 Lambda 函数在账户或虚拟私有云 (VPC) 中运行。VPC Lattice 服务包含以下组件：目标组、侦听器和规则。  

![\[具有侦听器和两个目标组的服务。\]](http://docs.aws.amazon.com/zh_cn/vpc-lattice/latest/ug/images/service.png)
  
目标群体  
运行应用程序或服务的资源集合，也称为目标。这些目标类似于弹性负载均衡提供的目标组，但不可互换。支持的目标类型包括 EC2 实例、IP 地址、Lambda 函数、应用程序负载均衡器、Amazon ECS 任务和 Kubernetes Pod。  
侦听器  
此为检查连接请求并将其路由到目标组中目标的过程。您可以使用协议和端口号配置监听器。  
规则  
侦听器的默认组件，用于将请求转发到 VPC Lattice 目标组中的目标。每条规则由优先级、一个或多个操作以及一个或多个条件组成。规则决定了侦听器路由客户端请求的方式。

**资源**  
资源是一个实体，例如亚马逊关系数据库服务 (Amazon RDS) 数据库、Amazon EC2 实例、应用程序终端节点、域名目标或 IP 地址。您可以通过在 AWS Resource Access Manager (AWS RAM) 中创建资源共享、创建资源网关和定义资源配置来共享 VPC 中的资源。

**资源网关**  
资源网关是资源所在的 VPC 的入口点。

**资源配置**  
资源配置是一个逻辑对象，它表示单个资源或一组资源。资源可以是 IP 地址、域名目标或 Amazon RDS 数据库。

**服务网络**  
服务和资源配置集合的逻辑边界。客户端可以位于与服务网络关联的 VPC 中。如果获得授权，与同一服务网络关联的客户端和服务可以相互通信。  
在下图中，客户端可以与两个服务通信，因为 VPC 和服务与同一个服务网络关联。  

![\[具有服务器和客户端的服务网络。\]](http://docs.aws.amazon.com/zh_cn/vpc-lattice/latest/ug/images/service-network.png)


**服务目录**  
一个中央注册中心，其中包含您拥有或通过 AWS RAM该账户与之共享的所有VPC Lattice服务。

**验证策略**  
可用于定义服务访问权限的细粒度授权策略。您可以将单独的验证策略附加到单个服务或服务网络。例如，您可以创建一个策略，说明在 EC2 实例的自动扩缩组上运行的支付服务，应如何与在 AWS Lambda中运行的计费服务交互。  
资源配置不支持身份验证策略。服务网络的身份验证策略不适用于服务网络中的资源配置。

## 角色和责任
<a name="roles-and-responsibilities"></a>

角色决定了谁负责 Amazon VPC Lattice 中信息的设置和流动。通常有两个角色：服务网络所有者和服务所有者，他们的职责可能重叠。

**服务网络所有者**：服务网络所有者通常是组织中的网络管理员或云管理员。服务网络所有者负责创建、共享和配置服务网络。他们还管理可以访问 VPC Lattice 中服务网络或服务的人员。服务网络所有者可以为与服务网络关联的服务定义粗粒度的访问设置。这些控制用于管理使用验证和授权策略的客户端和服务之间的通信。如果服务或资源配置与服务网络所有者的账户共享，则服务网络所有者还可以将服务或资源配置与单个或多个服务网络相关联。

![\[服务网络所有者的角色和责任\]](http://docs.aws.amazon.com/zh_cn/vpc-lattice/latest/ug/images/service-network-owner.png)


**服务所有者**-服务所有者通常是组织中的软件开发人员。服务所有者负责在 VPC Lattice 中创建服务，定义路由规则，将服务与服务网络关联。他们还可以定义细粒度访问设置来限制访问，只有经过验证和授权的服务及客户端才可访问。

![\[服务所有者的角色和责任\]](http://docs.aws.amazon.com/zh_cn/vpc-lattice/latest/ug/images/service-owner.png)


**资源所有者**-资源所有者通常是组织中的软件开发人员，担任数据库等资源的管理员。资源所有者为资源创建资源配置，定义资源配置的访问设置，并将资源配置与服务网络关联起来。

![\[资源所有者的角色和责任\]](http://docs.aws.amazon.com/zh_cn/vpc-lattice/latest/ug/images/resource-owner.png)


## 功能
<a name="vpc-service-network-features"></a>

以下是 VPC Lattice 提供的核心功能。

**服务发现**  
与服务网络 VPCs 关联的所有客户机和服务都可以与同一服务网络中的其他服务进行通信。DNS 将 service-to-service流量定向 client-to-service并通过 VPC 莱迪思终端节点。当客户端向服务发送请求时，会使用服务的 DNS 名称。Route 53 Resolver 将流量发送到 VPC Lattice，然后由其识别目标服务。

**连接**  
Client-to-service 并在 AWS 网络基础架构内建立 client-to-resource连接。当您将 VPC 与服务网络关联时，VPC 中的任何客户端都可以（通过资源配置）连接到服务网络中的服务和资源，前提是他们拥有所需的访问权限。VPC 莱迪思支持重叠的 CIDR 技术。

**本地访问**  
您可以使用 VPC 终端节点（由提供支持 AWS PrivateLink）启用从 VPC 到服务网络的连接。*服务网络*类型的 VPC 终端节点允许您通过 Direct Connect 和 VPN 从本地网络访问服务网络中的服务和资源。通过 VPC 对等连接或 AWS Transit Gateway 也可以通过 VPC 终端节点访问资源和服务的流量。

**可观测性**  
VPC Lattice 为遍历服务网络的每个请求和响应生成指标和日志，以帮助您监控应用程序并对其进行问题排查。默认情况下，指标会发布到服务所有者账户。服务所有者和资源所有者可以选择开启日志记录，并接收所有客户端 access/requests 的服务和资源的日志。服务网络所有者还可以开启服务网络上的登录功能， access/requests 将来自连接到服务网络 VPCs 的客户端的所有服务和资源记录下来。  
VPC Lattice 使用以下工具来帮助您监控和排除服务故障： Amazon CloudWatch 日志组、Firehose 传输流和 Amazon S3 存储桶。

**安全性**  
VPC Lattice 提供了一个框架，您可以使用该框架在网络的多个层实施防御策略。第一层是服务、资源配置、VPC 关联和服务网络类型的 VPC 端点的组合。如果没有 VPC 和服务关联或服务网络类型的 VPC 终端节点，客户端就无法访问服务。同样，如果没有 VPC 和资源配置以及服务关联或服务网络类型的 VPC 终端节点，客户端就无法访问资源。  
第二层使用户能够将安全组附加到 VPC 和服务网络之间的关联。第三层和第四层是验证策略，可以在服务网络级别和服务级别单独应用。

**可用区亲和力**  
VPC Lattice 支持可用区 (AZ) 关联性来路由流量。当客户端向 VPC Lattice 发送请求时，VPC Lattice 会使用与客户端位于同一可用区的服务或资源的 IP 地址进行响应。如果该可用区不可用，VPC Lattice 将使用其他 AZs可用区的 IP 地址进行响应。从 VPC Lattice 到目标，路由是指向可能分布在各 AZs处的目标。此外，VPC Lattice 不收取可用区间数据传输费用。

## 访问 VPC Lattice
<a name="accessing"></a>

您可以使用以下任意界面创建、访问和管理 VPC Lattice：
+ **AWS 管理控制台**：提供可用于访问 VPC Lattice 的 Web 界面。
+ **AWS Command Line Interface (AWS CLI)** — 为包括 VPC Lattice 在内的一系列 AWS 服务提供命令。在 AWS CLI Windows、macOS 和 Linux 上都支持。有关 CLI 的更多信息，请参阅 [AWS Command Line Interface](https://aws.amazon.com/cli/)。有关更多信息 APIs，请参阅 [Amazon VPC Lattice API 参考](https://docs.aws.amazon.com//vpc-lattice/latest/APIReference/)。
+ **适用于 Kubernetes 的 VPC Lattice 控制器**：管理 Kubernetes 集群的 VPC Lattice 资源。有关将 VPC Lattice 与 Kubernetes 结合使用的更多信息，请参阅 [AWS 网关 API 控制器用户指南](https://www.gateway-api-controller.eks.aws.dev/)。
+ **CloudFormation**：帮助您对 AWS 资源进行建模和设置。有关 API 的更多信息，请参阅 [Amazon VPC Lattice 资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_VpcLattice.html)。

## VPC 莱迪思服务终端节点
<a name="service-endpoints"></a>

端点是用作 AWS Web 服务入口点的 URL。VPC Lattice 支持以下终端节点类型：
+ [IPv4 端点](#service-endpoints-ipv4)
+ [双栈端点](#service-endpoints-ipv6)（同时支持和 IPv4 ） IPv6

当您发出请求时，您可以指定要使用的端点。如果您未指定终端节点，则默认使用该 IPv4终端节点。要使用不同的端点类型，您必须在请求中指定。有关如何执行此操作的示例，请参阅[指定端点](#service-endpoints-specify-endpoints)。有关可用终端节点的表，请参阅 [Amazon VPC Lattice 终端节点](https://docs.aws.amazon.com/general/latest/gr/vpc-lattice-service.html)。

### IPv4 端点
<a name="service-endpoints-ipv4"></a>

 IPv4 端点仅支持 IPv4 流量。 IPv4 终端节点适用于所有区域。

 如果您指定通用端点 `vpc-lattice.amazonaws.com`，则我们将端点用于 `us-east-1`。要使用其他区域，请指定其关联端点。例如，如果您指定 `vpc-lattice.us-east-2.amazonaws.com` 为端点，我们会将您的请求定向到 `us-east-2` 端点。

IPv4 端点名称使用以下命名约定：
+ `vpc-lattice.region.amazonaws.com`

例如，该`eu-west-1`区域的 IPv4 终端节点名称为`vpc-lattice.eu-west-1.amazonaws.com`。

### 双栈（IPv4 和 IPv6）端点
<a name="service-endpoints-ipv6"></a>

双栈端点同时支持 IPv4 和流量。 IPv6 双栈终端节点适用于所有区域。当您向双栈端点发出请求时，终端节点 URL 会解析为 IPv6 或 IPv4 地址，具体取决于您的网络和客户端使用的协议。

双堆栈端点名称使用以下命名约定：
+ `vpc-lattice.region.api.aws`

例如，`eu-west-1` 区域的双堆栈端点名称是 `vpc-lattice.eu-west-1.api.aws`。

### 指定端点
<a name="service-endpoints-specify-endpoints"></a>

以下示例说明如何使用 for 为`us-east-2`区域指定终端节点`vpc-lattice`。 AWS CLI 
+ **IPv4**

  ```
  aws vpc-lattice get-service --service-identifier svc-0285b53b2eEXAMPLE --region us-east-2 --endpoint-url https://vpc-lattice.us-east-2.amazonaws.com
  ```
+ **双堆栈**

  ```
  aws vpc-lattice get-service --service-identifier svc-0285b53b2eEXAMPLE --region us-east-2 --endpoint-url https://vpc-lattice.us-east-2.api.aws
  ```

## 定价
<a name="pricing"></a>

VPC Lattice 允许您根据服务配置时间、通过每个服务传输的数据量，以及请求数量付费。作为资源所有者，您需要为传入和传出每种资源的数据付费。作为服务网络所有者，您需要按小时为与服务网络相关的资源配置付费。作为拥有与服务网络关联的 VPC 的使用者，您需要为从您的 VPC 向服务网络中的资源传输和传出数据付费。有关更多信息，请参阅 [Amazon VPC Lattice 定价](https://aws.amazon.com/vpc/lattice/pricing/)。