

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

# VPC Lattice 服务的侦听器
<a name="listeners"></a>

在开始使用您的VPC Lattice服务之前，您必须添加一个*监听器*。侦听器是一个使用您配置的协议和端口检查连接请求的进程。为侦听器定义的规则决定了服务如何将请求路由到其注册的目标。

![\[具有侦听器、侦听器规则和两个目标组的服务。\]](http://docs.aws.amazon.com/zh_cn/vpc-lattice/latest/ug/images/service.png)


**Topics**
+ [侦听器配置](#listener-configuration)
+ [HTTP 侦听器](http-listeners.md)
+ [HTTPS 侦听器](https-listeners.md)
+ [TLS 侦听器](tls-listeners.md)
+ [侦听器规则](listener-rules.md)
+ [删除侦听器](delete-listener.md)

## 侦听器配置
<a name="listener-configuration"></a>

侦听器支持以下协议和端口：
+ **协议**：HTTP、HTTPS、TLS
+ **端口**：1-65535

如果侦听器协议是 HTTPS，VPC Lattice 将配置和管理与 VPC Lattice 生成的 FQDN 关联的 TLS 证书。VPC Lattice 支持 HTTP/1.1 和 HTTP/2 上的 TLS。当您使用 HTTPS 侦听器配置服务时，VPC Lattice 将使用应用程序层协议协商（ALPN）自动确定 HTTP 协议。如果没有 ALPN，VPC Lattice 默认使用 HTTP/1.1。有关更多信息，请参阅 [HTTPS 侦听器](https-listeners.md)。

VPC Lattice 可以侦听 HTTP、HTTPS、HTTP/1.1 和 HTTP/2，并使用这些协议和版本与目标通信。我们不要求侦听器和目标组协议匹配。VPC Lattice 管理协议和版本之间升级和降级的整个过程。有关更多信息，请参阅 [协议版本](target-groups.md#target-group-protocol-version)。

您可以创建 TLS 侦听器来确保您的应用程序解密加密流量，而不是 VPC Lattice。有关更多信息，请参阅 [TLS 侦听器](tls-listeners.md)。

VPC 莱迪思本身不支持。 WebSockets但是，您仍然可以使用 TLS 侦听器或通过 VPC Lattice 资源进行路由，连接到基于 WebSocket 的服务。

# VPC Lattice 服务的 HTTP 侦听器
<a name="http-listeners"></a>

侦听器是用于检查连接请求的进程。您可以在创建 VPC Lattice 服务时定义侦听器。您可以随时向服务添加侦听器。

此页面上的信息可帮助您为服务创建 HTTP 侦听器。有关创建使用其他协议的监听器的信息，请参阅[HTTPS 侦听器](https-listeners.md)和。[TLS 侦听器](tls-listeners.md)

## 先决条件
<a name="listener-prereqs"></a>
+ 要将转发操作添加到默认侦听器规则，您必须指定可用的 VPC Lattice 目标组。有关更多信息，请参阅 [创建 VPC Lattice 目标组](create-target-group.md)。
+ 您可以在多个侦听器中指定同一个目标组，但这些侦听器必须属于同一服务。要在 VPC Lattice 服务中使用目标组，必须验证目标组未被任何其他 VPC Lattice 服务的侦听器使用。

## 添加 HTTP 侦听器
<a name="add-http-listener"></a>

您可以随时向服务添加侦听器和规则。为侦听器配置一个协议和端口，用于从客户端连接到服务，并为默认侦听器规则配置一个 VPC Lattice 目标组。有关更多信息，请参阅 [侦听器配置](listeners.md#listener-configuration)。

**使用控制台添加 HTTP 侦听器**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**添加侦听器**。

1. 对于**侦听器名称**，您可以提供自定义侦听器名称，也可以使用侦听器的协议和端口作为侦听器名称。您指定的自定义名称最多可包含 63 个字符，且对账户中的每项服务必须是唯一的。有效字符：a-z、0-9 和连字符（-）。不能将连字符用作第一个或最后一个字符，也不能紧跟在另一个连字符之后。创建后无法更改名称。

1. 对于**协议 : 端口**，选择 **HTTP**，然后输入端口号。

1. 对于**默认操作**，选择要接收流量的 VPC Lattice 目标组，然后选择要分配给该目标组的权重。为目标组分配的权重可用于设定目标组接收流量的优先级。例如，如果两个目标组具有相同的权重，则每个目标组将接收一半的流量。如果只指定了一个目标组，则 100% 的流量将发送到一个目标组。

   您可以选择为默认操作添加另一个目标组。选择**添加操作**，然后选择一个目标组并指定其权重。

1. （可选）要添加其他规则，请选择**添加规则**，然后输入规则的名称、优先级、条件和操作。

   您可以为每条规则指定一个 1 到 100 之间的优先级编号。侦听器不能具有优先级相同的多个规则。规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。有关更多信息，请参阅 [侦听器规则](listener-rules.md)。

1. （可选）要添加标签，请展开**侦听器标签**，选择**添加新标签**，然后输入标签键和标签值。

1. 检查您的配置，然后选择**添加**。

**要添加 HTTP 侦听器，请使用 AWS CLI**  
使用 [create-listener](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-listener.html) 命令创建具有默认规则的侦听器，并使用 [create-rule](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-rule.html) 命令创建其他侦听器规则。

# VPC Lattice 服务的 HTTPS 侦听器
<a name="https-listeners"></a>

侦听器是用于检查连接请求的进程。您可以在创建服务时定义侦听器。您可以随时向 VPC Lattice 中的服务添加侦听器。

您可以创建 HTTPS 侦听器，该侦听器使用 TLS 版本 1.2 或 TLS 1.3 直接终止与 VPC Lattice 的 HTTPS 连接。VPC Lattice 将预置和管理与 VPC Lattice 生成的完全限定域名（FQDN）关联的 TLS 证书。VPC Lattice 支持 HTTP/1.1 和 HTTP/2 上的 TLS。当您使用 HTTPS 侦听器配置服务时，VPC Lattice 将通过应用程序层协议协商（ALPN）自动确定 HTTP 协议。如果没有 ALPN，VPC Lattice 默认使用 HTTP/1.1。

VPC Lattice 使用多租户架构，这意味着可以在同一端点上托管多个服务。VPC Lattice 对每个客户端请求使用带有服务器名称指示（SNI）的 TLS。不支持加密的客户端问候 (ECH) 和加密服务器名称指示 (ESNI)。

VPC Lattice 可以侦听 HTTP、HTTPS、HTTP/1.1 和 HTTP/2，并使用这些协议和版本与目标通信。这些侦听器和目标组配置不需要匹配。VPC Lattice 管理协议和版本之间升级和降级的整个过程。有关更多信息，请参阅 [协议版本](target-groups.md#target-group-protocol-version)。

为确保您的应用程序解密流量，请改为创建 TLS 侦听器。通过 TLS 直通，VPC 莱迪思不会终止 TLS。有关更多信息，请参阅 [TLS 侦听器](tls-listeners.md)。

**Contents**
+ [安全策略](#listener-security-policy)
+ [ALPN 策略](#listener-alpn-policy)
+ [添加 HTTPS 侦听器](#add-https-listener)

## 安全策略
<a name="listener-security-policy"></a>

VPC Lattice 使用的安全策略是 TLSv1 .2 协议和 SSL/TLS 密码列表的组合。该协议在客户端和服务器之间建立安全连接，有助于确保客户端和 VPC Lattice 中的服务之间传递的所有数据均为私有。密码是使用加密密钥创建编码消息的加密算法。协议使用多种密码对数据进行加密。在连接协商过程中，客户端和 VPC Lattice 按优先顺序提供各自支持的密码和协议列表。默认情况下，会为安全连接选择服务器列表中与任何一个客户端的密码匹配的第一个密码。

VPC Lattice 按以下优先顺序使用以下 TLS 1.2 SSL/TLS 密码：
+ `ECDHE-RSA-AES128-GCM-SHA256`
+ `ECDHE-RSA-AES128-SHA`
+ `ECDHE-RSA-AES256-GCM-SHA384`
+ `ECDHE-RSA-AES256-SHA`
+ `AES128-GCM-SHA256`
+ `AES128-SHA`
+ `AES256-GCM-SHA384`
+ `AES256-SHA`

VPC Lattice 还按以下优先顺序使用以下 TLS 1.3 SSL/TLS 密码：
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

## ALPN 策略
<a name="listener-alpn-policy"></a>

*应用程序层协议协商（ALPN）*是一种 TLS 扩展，在初始 TLS 握手 hello 消息中发送。通过 ALPN，应用层能够协商应在安全连接（例如 HTTP/1 和 HTTP/2）上使用什么协议。

当客户端发起 ALPN 连接时，VPC Lattice 服务会将客户端 ALPN 首选项列表与其 ALPN 策略进行比较。如果客户端支持来自 ALPN 策略的协议，VPC Lattice 服务会根据 ALPN 策略的首选项列表建立连接。否则，服务不使用 ALPN。

VPC Lattice 支持以下 ALPN 策略：

`HTTP2Preferred`  
首选 HTTP/2 而不是 HTTP/1.1。ALPN 首选项列表是 h2、http/1.1。

## 添加 HTTPS 侦听器
<a name="add-https-listener"></a>

为侦听器配置一个协议和端口，用于从客户端连接到服务，并为默认侦听器规则配置一个目标组。有关更多信息，请参阅 [侦听器配置](listeners.md#listener-configuration)。

**先决条件**
+ 要将转发操作添加到默认侦听器规则，您必须指定可用的 VPC Lattice 目标组。有关更多信息，请参阅 [创建 VPC Lattice 目标组](create-target-group.md)。
+ 您可以在多个侦听器中指定同一个目标组，但这些侦听器必须属于同一 VPC Lattice 服务。要在 VPC Lattice 服务中使用目标组，必须验证目标组未被任何其他 VPC Lattice 服务的侦听器使用。
+ 您可以使用 VPC Lattice 提供的证书，也可以将自己的证书导入到。 AWS Certificate Manager有关更多信息，请参阅 [VPC Lattice 自带证书（BYOC）](service-byoc.md)。

**使用控制台添加 HTTPS 侦听器**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**添加侦听器**。

1. 对于**侦听器名称**，您可以提供自定义侦听器名称，也可以使用侦听器的协议和端口作为侦听器名称。您指定的自定义名称最多可包含 63 个字符，且对账户中的每项服务必须是唯一的。有效字符：a-z、0-9 和连字符（-）。不能将连字符用作第一个或最后一个字符，也不能紧跟在另一个连字符之后。创建侦听器后，不能更改其名称。

1. 对于**协议 : 端口**，选择 **HTTPS**，然后输入端口号。

1. 对于**默认操作**，选择要接收流量的 VPC Lattice 目标组，然后选择要分配给该目标组的权重。为目标组分配的权重可用于设定目标组接收流量的优先级。例如，如果两个目标组具有相同的权重，则每个目标组将接收一半的流量。如果只指定了一个目标组，则 100% 的流量将发送到一个目标组。

   您可以选择为默认操作添加另一个目标组。选择**添加操作**，然后选择一个目标组并指定其权重。

1. （可选）要添加其他规则，请选择**添加规则**，然后输入规则的名称、优先级、条件和操作。

   您可以为每条规则指定一个 1 到 100 之间的优先级编号。侦听器不能具有优先级相同的多个规则。规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。有关更多信息，请参阅 [侦听器规则](listener-rules.md)。

1. （可选）要添加标签，请展开**侦听器标签**，选择“添加新标签”，然后输入标签键和标签值。

1. 对于 **HTTPS 侦听器证书设置**，如果您在创建服务时未指定自定义域名，VPC Lattice 会自动生成 TLS 证书，以保护流经侦听器的流量。

   如果您使用自定义域名创建了服务，但没有指定匹配的证书，则现在可以通过从**自定义 SSL/TLS **证书中选择证书来完成此操作。否则，选择您在创建服务时指定的证书。

1. 检查您的配置，然后选择**添加**。

**要添加 HTTPS 侦听器，请使用 AWS CLI**  
使用 [create-listener](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-listener.html) 命令创建具有默认规则的侦听器，并使用 [create-rule](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-rule.html) 命令创建其他侦听器规则。

# VPC 莱迪思服务的 TLS 监听器
<a name="tls-listeners"></a>

侦听器是用于检查连接请求的进程。您可以在创建 VPC Lattice 服务时定义侦听器。您可以随时向服务添加侦听器。

您可以创建一个 TLS 侦听器，这样 VPC Lattice 就可以将加密流量传递到您的应用程序，而无需对其进行解密。

如果您更喜欢 VPC Lattice 解密加密流量并将未加密的流量发送到您的应用程序，请改为创建 HTTPS 侦听器。有关更多信息，请参阅 [HTTPS 侦听器](https-listeners.md)。

## 注意事项
<a name="tls-listeners-considerations"></a>

以下注意事项适用于 TLS 侦听器：
+ VPC 莱迪思服务必须具有自定义域名。服务自定义域名用作服务名称指示 (SNI) 匹配。如果您在创建服务时指定了证书，则不会使用该证书。
+ TLS 侦听器唯一允许使用的规则是默认规则。
+ TLS 侦听器的默认操作必须是向 TCP 目标组执行的转发操作。
+ 默认情况下，TCP 目标组的运行状况检查处于禁用状态。如果您为 TCP 目标组启用运行状况检查，则必须指定协议和协议版本。
+ TLS 侦听器使用客户端 hello 消息的 SNI 字段路由请求。如果匹配条件与 client-hello 完全匹配，则可以在目标上使用通配符和 SAN 证书。
+ 由于从客户端到目标的所有流量都保持加密状态，因此 VPC Lattice 无法读取 HTTP 标头，也无法插入或删除 HTTP 标头。因此，使用 TLS 侦听器时，存在以下限制：
  + 连接时长限制为 10 分钟
  + 身份验证政策仅限于匿名委托人
  + 不支持 Lambda 目标
+ Websocket 连接可以使用 TLS 侦听器连接到 VPC 莱迪思服务。存在以下限制：
  + 连接时长限制为 10 分钟
  + 身份验证政策仅限于匿名委托人
  + 不支持 Lambda 目标
+ 不支持加密的客户端问候 (ECH)。
+ 不支持加密服务器名称指示 (ESNI)。

## 添加 TLS 监听器
<a name="add-tls-listener"></a>

为侦听器配置一个协议和端口，用于从客户端连接到服务，并为默认侦听器规则配置一个目标组。有关更多信息，请参阅 [侦听器配置](listeners.md#listener-configuration)。

**使用控制台添加 TLS 侦听器**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**添加侦听器**。

1. 对于**侦听器名称**，您可以提供自定义侦听器名称，也可以使用侦听器的协议和端口作为侦听器名称。您指定的自定义名称最多可包含 63 个字符，且对账户中的每项服务必须是唯一的。有效字符：a-z、0-9 和连字符（-）。不能将连字符用作第一个或最后一个字符，也不能紧跟在另一个连字符之后。创建侦听器后，不能更改其名称。

1. 对于**协议**，选择 **TLS**。对于**端口**，输入端口号。

1. 对于**转发到目标组**，请选择使用TCP协议接收流量的VPC Lattice目标组，然后选择要分配给该目标组的权重。您可以选择添加其他目标组。选择 “**添加目标组**”，然后选择目标组并输入其权重。

1. （可选）要添加标签，请展开**侦听器标签**，选择“添加新标签”，然后输入标签键和标签值。

1. 检查您的配置，然后选择**添加**。

**要添加 TLS 侦听器，请使用 AWS CLI**  
使用 [create-listener](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-listener.html) 命令使用默认规则创建监听器。指定 TLS\$1PASSTHROUGH 协议。

# VPC Lattice 服务的侦听器规则
<a name="listener-rules"></a>

每个侦听器都具有默认规则，您也可以定义其他规则。每条规则由优先级、一个或多个操作以及一个或多个条件组成。您可以随时添加或编辑规则。

**Topics**
+ [默认规则](#listener-default-rule)
+ [规则优先级](#listener-rule-priority)
+ [规则操作](#listener-rule-actions)
+ [规则条件](#listener-rule-conditions)
+ [添加规则](#add-rules)
+ [更新规则](#update-rules)
+ [删除规则](#delete-rules)

## 默认规则
<a name="listener-default-rule"></a>

创建侦听器时，请为默认规则定义操作。默认规则不能有条件。如果未满足侦听器的任一规则条件，则将执行默认规则的操作。

## 规则优先级
<a name="listener-rule-priority"></a>

每个规则都有一个优先级。规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。您可以随时更改非默认规则的优先级。您不能更改默认规则的优先级。

## 规则操作
<a name="listener-rule-actions"></a>

VPC Lattice 服务的侦听器支持转发操作和固定响应操作。

### 转发操作
<a name="forward-actions"></a>

您可以使用 `forward` 操作，将请求路由到一个或多个 VPC Lattice 目标组。如果为某个 `forward` 操作指定多个目标组，您必须为每个目标组指定权重。每个目标组权重都是一个介于 0 到 999 之间的值。对于将侦听器规则与加权目标组匹配的请求，会根据这些目标组的权重分配给这些目标组。例如，如果指定两个目标组，每个目标组的权重为 10，则每个目标组将接收一半的请求。如果指定两个目标组，一个权重为 10，另一个权重为 20，则权重为 20 的目标组接收的请求将是另一个目标组的两倍。

### 固定响应操作
<a name="fixed-response-actions"></a>

您可以使用 `fixed-response` 操作删除客户端请求并返回自定义 HTTP 响应。您可以使用此操作返回 404 或 500 响应码。

**Example 的固定响应操作示例 AWS CLI**  
您可以在创建或更新规则时指定操作。以下操作发送具有指定状态代码的固定响应。  

```
"action": { 
    "fixedResponse": { 
        "statusCode": 404
},
```

## 规则条件
<a name="listener-rule-conditions"></a>

每个规则条件都有类型和配置信息。当规则的条件满足时，将执行其操作。

以下是规则支持的匹配条件：

**标头匹配**  
路由基于每个请求的 HTTP 标头。您可以使用 HTTP 标头条件来配置基于请求的 HTTP 标头路由请求的规则。您可以指定标准或自定义 HTTP 标头字段的名称。标头名称和匹配评估不区分大小写。您可以通过开启区分大小写来更改此设置。标头名称不支持通配符。标头匹配支持前缀匹配、精确匹配和包含匹配。

**方法匹配**  
路由基于每个请求的 HTTP 请求方法。  
您可以使用 HTTP 请求方法条件来配置基于请求的 HTTP 请求方法路由请求的规则。您可以指定标准或自定义 HTTP 方法。方法匹配区分大小写。方法名称必须完全匹配。不支持通配符。

**路径匹配**  
路由基于匹配请求中的路径模式 URLs。  
您可以使用路径条件定义规则，根据请求中的 URL 路由请求。不支持通配符。支持路径前缀和精确匹配。

## 添加规则
<a name="add-rules"></a>

您可以随时添加侦听器规则。

**要使用控制台添加侦听器**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**编辑侦听器**。

1. 展开**侦听器规则**并选择**添加规则**。

1. 对于**规则名称**，输入规则的名称。

1. 对于**优先级**，输入 1 到 100 之间的优先级。规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。

1. 对于**条件**，输入路径匹配条件的路径模式。每个字符串的最大长度为 200 个字符。比较不区分大小写。不支持通配符。

   要添加标头匹配或方法匹配规则条件，请使用 AWS CLI 或 S AWS DK。

1. 对于**操作**，选择 VPC Lattice 目标组。

1. 选择**保存更改**。

**要添加规则，请使用 AWS CLI**  
使用 [create-rule](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-rule.html) 命令。

## 更新规则
<a name="update-rules"></a>

您可以随时更新侦听器规则。您可以修改其优先级、条件、目标组以及每个目标组的权重。无法修改规则的名称。

**要使用控制台更新侦听器规则**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**编辑侦听器**。

1. 根据需要修改规则优先级、条件和操作。

1. 查看您的更新并选择**保存更改**。

**要更新规则，请使用 AWS CLI**  
使用 [update-rule](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/update-rule.html) 命令。

## 删除规则
<a name="delete-rules"></a>

您可以随时删除侦听器的非默认规则。您不能删除侦听器的默认规则。删除侦听器时，会删除所有规则。

**要使用控制台删除侦听器规则**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**编辑侦听器**。

1. 找到规则并选择**删除**。

1. 选择**保存更改**。

**要删除规则，请使用 AWS CLI**  
使用 [delete-rule](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/delete-rule.html) 命令。

# 删除您的 VPC 莱迪思服务的监听器
<a name="delete-listener"></a>

可以随时删除侦听器。删除侦听器后，其所有规则都会自动删除。

**使用控制台删除侦听器**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中的 **VPC Lattice** 下，选择**服务**。

1. 选择服务名称以打开其详细信息页面。

1. 在**路由**选项卡上，选择**删除侦听器**。

1. 提示进行确认时，输入 **confirm**，然后选择**删除**。

**要删除监听器，请使用 AWS CLI**  
使用 [delete-listener](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/delete-listener.html) 命令。