

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

# 为网络负载均衡器创建侦听器
<a name="create-listener"></a>

侦听器是用于检查连接请求的进程。您可在创建负载均衡器时定义侦听器，并可随时向负载均衡器添加侦听器。

## 先决条件
<a name="listener-prereqs"></a>
+ 您必须为默认操作指定目标组。有关更多信息，请参阅 [为网络负载均衡器创建目标组](create-target-group.md)。
+ 您必须指定 TLS 监听器的 SSL 证书。负载均衡器先使用证书终止连接，然后解密来自客户端的请求，最后再将请求路由到目标。有关更多信息，请参阅 [网络负载均衡器的服务器证书](tls-listener-certificates.md)。
+ 您不能将 IPv4 目标组与`dualstack`负载均衡器的 UDP 侦听器配合使用。
+ QUIC 和 TCP\$1QUIC 侦听器不支持在 `dualstack` 负载均衡器或关联安全组的负载均衡器上使用。
+ QUIC 和 TCP\$1QUIC 侦听器不支持在关联安全组的负载均衡器上使用。
+ 在任何给定时间，网络负载均衡器上仅允许存在一个 QUIC 或 TCP\$1QUIC 侦听器。
+ 在具有 UDP 或 TCP\$1UDP 侦听器的网络负载均衡器上，不允许配置 QUIC 和 TCP\$1QUIC 侦听器。

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

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

------
#### [ Console ]

**添加侦听器**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择**负载均衡器**。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在 **Listeners**（侦听器）选项卡上，选择 **Add listener**（添加侦听器）。

1. ****对于**协议**，请选择 **TCP**、**UDP**、**TCP\$1UDP**、**TLS**、QUIC** 或 TCP\$1QUIC**。保留默认端口或键入其他端口。

1. 对于**默认操作**，选择一个要将流量转发到的目标组。

   要添加其他目标组，请选择**添加目标组**，并根据需要更新权重。

   如果您还没有能满足您需求的目标组，请选择**创建目标组**，以立即创建一个目标组。有关更多信息，请参阅 [创建目标组](create-target-group.md)。

1. [TLS 侦听器] 对于 **Security policy (安全策略)**，建议您保留默认安全策略。

1. [TLS 侦听器] 对于**默认 SSL/TLS 服务器证书**，请选择默认证书。您可从以下任一来源选择证书：
   + 如果您使用创建或导入了证书 Amazon Certificate Manager，请选择**从 ACM**，然后从证书**（来自 ACM）中选择证书**。
   + 如果您使用 IAM 导入了证书，请选择**来自 ACM**，然后从**证书（来自 ACM）**中选择该证书。
   + 如果您有证书，请选择**导入证书**。选择**导入到 ACM** 或者**导入到 IAM**。对于**证书私有密钥**，请复制并粘贴私有密钥文件（PEM 编码的文件）的内容。对于**证书正文**，请复制并粘贴公有密钥证书文件（PEM 编码的文件）的内容。对于**证书链**，请复制并粘贴证书链文件（PEM 编码的文件）的内容，除非您使用的是自签名证书并且浏览器是否隐式接受证书并不重要。

1. [TLS 侦听器] 对于 **ALPN policy (ALPN 策略)**，请选择一个策略以启用 ALPN，或选择 **None (无)** 以禁用 ALPN。有关更多信息，请参阅 [ALPN 策略](load-balancer-listeners.md#alpn-policies)。

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

1. 选择**添加**。

1. [TLS 侦听器] 要向可选证书列表添加证书，请参阅[将证书添加到证书列表](listener-update-certificates.md#add-certificates)。

------
#### [ Amazon CLI ]

**创建目标组**  
如果您没有可以用于默认操作的目标组，请立即使用[create-target-group](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-target-group.html)命令创建一个目标组。有关示例，请参阅 [创建目标组](create-target-group.md)。

**添加 TCP 侦听器**  
使用 [create-listener](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-listener.html) 命令，指定 TCP 协议。

```
aws elbv2 create-listener \
    --load-balancer-arn load-balancer-arn \
    --protocol TCP \
    --port 80 \
    --default-actions Type=forward,TargetGroupArn=target-group-arn
```

**要添加具有多个目标组的 TCP 侦听器**  
使用 [create-listener](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-listener.html) 命令，指定 TCP 协议、目标组和权重。

```
aws elbv2 create-listener \
    --load-balancer-arn load-balancer-arn \
    --protocol TCP \
    --port 80 \
    --default-actions '[{
        "Type":"forward",
        "ForwardConfig":{
            "TargetGroups":[
                {"TargetGroupArn":"target-group-1-arn","Weight":10},
                {"TargetGroupArn":"target-group-2-arn","Weight":30}
            ]
        }
    }]'
```

**要添加 TLS 侦听器**  
使用 [create-listener](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-listener.html) 命令，指定 TLS 协议。

```
aws elbv2 create-listener \
    --load-balancer-arn load-balancer-arn \
    --protocol TLS \
    --port 443 \
    --certificates CertificateArn=certificate-arn \
    --ssl-policy ELBSecurityPolicy-TLS13-1-2-Res-2021-06 \
    --default-actions Type=forward,TargetGroupArn=target-group-arn
```

**要添加 UDP 侦听器**  
使用 [create-listener](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-listener.html) 命令，指定 UDP 协议。

```
aws elbv2 create-listener \
    --load-balancer-arn load-balancer-arn \
    --protocol UDP \
    --port 53 \
    --default-actions Type=forward,TargetGroupArn=target-group-arn
```

**要添加 QUIC 侦听器**  
使用 [create-listener](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-listener.html) 命令，指定 QUIC 协议。

```
aws elbv2 create-listener \
    --load-balancer-arn load-balancer-arn \
    --protocol QUIC \
    --port 443 \
    --default-actions Type=forward,TargetGroupArn=target-group-arn
```

------
#### [ CloudFormation ]

**要添加 TCP 侦听器**  
[AWS::ElasticLoadBalancingV2::Listener](https://docs.amazonaws.cn/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)使用 TCP 协议定义类型的资源。

```
Resources:
  myTCPListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      LoadBalancerArn: !Ref myLoadBalancer
      Protocol: TCP
      Port: 80
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref myTargetGroup
```

**要添加具有多个目标组的 TCP 侦听器**  
[AWS::ElasticLoadBalancingV2::Listener](https://docs.amazonaws.cn/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)使用 TCP 协议定义类型的资源。

```
Resources:
    myTCPListener:
        Type: 'AWS::ElasticLoadBalancingV2::Listener'
        Properties:
        LoadBalancerArn: !Ref myLoadBalancer
        Protocol: TCP
        Port: 80
        DefaultActions:
            - Type: forward
            ForwardConfig:
                TargetGroups:
                - TargetGroupArn: !Ref myTargetGroup1,
                    Weight: 10
                - TargetGroupArn: !Ref myTargetGroup2,
                    Weight: 30
            TargetGroupStickinessConfig: 
                Enabled: true
```

**要添加 TLS 侦听器**  
[AWS::ElasticLoadBalancingV2::Listener](https://docs.amazonaws.cn/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)使用 TLS 协议定义类型的资源。

```
Resources:
  myTLSListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      LoadBalancerArn: !Ref myLoadBalancer
      Protocol: TLS
      Port: 443
      SslPolicy: "ELBSecurityPolicy-TLS13-1-2-Res-2021-06"
      Certificates:
        - CertificateArn: "certificate-arn"
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref myTargetGroup
```

**要添加 UDP 侦听器**  
[AWS::ElasticLoadBalancingV2::Listener](https://docs.amazonaws.cn/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)使用 UDP 协议定义类型的资源。

```
Resources:
  myUDPListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      LoadBalancerArn: !Ref myLoadBalancer
      Protocol: UDP
      Port: 53
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref myTargetGroup
```

**要添加 QUIC 侦听器**  
[AWS::ElasticLoadBalancingV2::Listener](https://docs.amazonaws.cn/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)使用 QUIC 协议定义类型的资源。

```
Resources:
  myQUICListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      LoadBalancerArn: !Ref myLoadBalancer
      Protocol: QUIC
      Port: 443
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref myTargetGroup
```

------