

# 验证 Amazon ECS 已停止任务连接
<a name="verify-connectivity"></a>

有时，任务会因为网络连接问题而停止。这可能是间歇性问题，但很可能是因任务无法连接到端点所致。

## 测试任务连接
<a name="test-network"></a>

您可以使用 `AWSSupport-TroubleshootECSTaskFailedToStart` 运行手册来测试任务连接。使用运行手册时，您需要提供以下资源信息：
+ 任务 ID

  使用最近失败的任务的 ID。
+ 任务所在的集群

有关如何使用运行手册的信息，请参阅《AWS Systems Manager Automation 运行手册参考》**中的 [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html)。

运行手册会对任务进行分析。您可以在**输出**部分查看以下可能导致任务无法启动的问题的结果：
+ 与已配置的容器注册表的网络连接
+ VPC 端点连接
+ 安全组规则配置

## 修正 VPC 端点问题
<a name="fix-vpc-endpoints"></a>

当 `AWSSupport-TroubleshootECSTaskFailedToStart` 运行手册结果表明存在 VPC 端点问题时，请检查以下配置：
+ 创建端点的 VPC 和 VPC 端点需要使用私有 DNS。
+ 确认任务无法连接到的服务所用 AWS PrivateLink 端点与任务位于同一 VPC 中。有关更多信息，请参阅以下章节之一：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 为任务子网配置一条允许通过端口 443 的 HTTPS DNS（TCP）流量出站规则。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》中的[配置安全组规则](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)**。
+ 如果您使用自定义域名服务器，请确认 DNS 查询的设置。查询必须具有端口 53 的出站访问权限，并且使用 UDP 和 TCP 协议。此外，查询必须具有端口 443 上的 HTTPS 访问权限。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》中的[配置安全组规则](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)**。
+ 如果子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

## 修正网络问题
<a name="fix-network-issues"></a>

当 `AWSSupport-TroubleshootECSTaskFailedToStart` 运行手册结果表明存在网络问题时，请检查以下配置：

### 在公有子网中使用 awsvpc 网络模式的任务
<a name="fix-network-issues-fargate-public"></a>

根据运行手册执行以下配置：
+ 对于在公有共子网中的任务，在启动任务时为**自动分配公有 IP** 指定**启用**。有关更多信息，请参阅 [将应用程序作为 Amazon ECS 任务运行](standalone-task-create.md)。
+ 您需要一个网关来处理互联网流量。任务子网的路由表需要有一个将流量指向该网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任务子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

### 在私有子网中使用 awsvpc 网络模式的任务
<a name="fix-network-issues-fargate-private"></a>

根据运行手册执行以下配置：
+ 启动任务时，对于**自动分配公有 IP**，选择**已禁用**。
+  在 VPC 中配置一个 NAT 网关，以用于将请求路由到互联网。有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》** 中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 任务子网的路由表需要有一个将流量指向 NAT 网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任务子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

### 不在公有子网中使用 awsvpc 网络模式的任务
<a name="fix-network-issues-ec2-public"></a>

根据运行手册执行以下配置：
+ 创建集群时，对于 **Amazon EC2 实例的联网**下的**自动分配 IP**，选择**开启**。

  此选项将为实例的主网络接口分配一个公有 IP 地址。
+ 您需要一个网关来处理互联网流量。实例子网的路由表需要有一个将流量指向该网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果实例子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

### 在私有子网中不使用 awsvpc 网络模式的任务
<a name="fix-network-issues-fargate-private"></a>

根据运行手册执行以下配置：
+ 创建集群时，对于 **Amazon EC2 实例的联网**下的**自动分配 IP**，选择**关闭**。
+  在 VPC 中配置一个 NAT 网关，以用于将请求路由到互联网。有关更多信息，请参阅 *Amazon VPC 用户指南*中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 实例子网的路由表需要有一个将流量指向 NAT 网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任务子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。