

# 外部实例的 Amazon ECS 集群
<a name="ecs-anywhere"></a>

Amazon ECS Anywhere 支持向 Amazon ECS 集群注册*外部实例*，如本地部署服务器或虚拟机（VM）。外部实例针对生成出站流量或流程数据的运行应用程序进行了优化。如果应用程序需要入站流量，则缺乏 Elastic Load Balancing 支持会降低运行这些工作负载的效率。Amazon ECS添加了一个新的 `EXTERNAL` 启动类型，您可以使用该类型在外部实例上创建服务或运行任务。

## 支持的操作系统和系统体系结构
<a name="ecs-anywhere-supported-os"></a>

下面是支持的操作系统列表。支持 `x86_64` 和 `ARM64` CPU 体系结构。
+ Amazon Linux 2023
+ Ubuntu 20、Ubuntu 22、Ubuntu 24
+ RHEL 9：在运行 [ECS Anywhere 安装脚本](https://github.com/aws/amazon-ecs-agent/blob/master/scripts/ecs-anywhere-install.sh)之前，您必须确保已安装 Docker。有关更多信息，请参阅 Docker 文档中的 [Install Docker Engine on RHEL](https://docs.docker.com/engine/install/rhel/)。

自 2026 年 8 月 7 日起，Amazon ECS Anywhere 不再支持以下操作系统：
+ Amazon Linux 2
+ CentOS Stream 9
+ RHEL 7、RHEL 8
+ Fedora 32、Fedora 33、Fedora 40
+ openSUSE Tumbleweed
+ Ubuntu 18
+ Debian 9、Debian 10、Debian 11、Debian 12
+ SUSE Enterprise Server 15
+ Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 20H2

## 注意事项
<a name="ecs-anywhere-considerations"></a>

在开始使用外部实例之前，请注意以下注意事项。
+ 您可以一次向一个集群注册一个外部实例。有关如何向其他集群注册外部实例的说明，请参阅 [注销 Amazon ECS 外部实例](ecs-anywhere-deregistration.md)。
+ 您的外部实例需要 IAM 角色，允许它们与 AWS API通信。有关更多信息，请参阅 [Amazon ECS Anywhere IAM 角色](iam-role-ecsanywhere.md)。
+ 您的外部实例不应具有本地定义的预配置实例凭证链，因为这会干扰注册脚本。
+ 要将容器日志发送到 CloudWatch Logs，请确保在任务定义中创建并指定任务执行 IAM 角色。
+ 当外部实例注册到集群时，`ecs.capability.external` 属性与实例相关联。此属性将实例标识为外部实例。可以将自定义属性添加到外部实例中，用作任务放置约束。有关更多信息，请参阅 [自定义属性](task-placement-constraints.md#ecs-custom-attributes)。
+ 您可以将资源标签添加到外部实例。有关更多信息，请参阅 [向 Amazon ECS 的外部容器实例添加标签](instance-details-tags-external.md)。
+ ECS Exec 在外部实例上受支持。有关更多信息，请参阅 [使用 ECS Exec 监控 Amazon ECS 容器](ecs-exec.md)。
+ 以下是特定于与外部实例联网的其他注意事项。有关更多信息，请参阅 [Networking](#ecs-anywhere-networking)。
  + 不支持服务负载平衡。
  + 不支持服务发现。
  + 在外部实例上运行的任务必须使用 `bridge`、`host` 或 `none` 网络模式。不支持 `awsvpc` 网络模式。
  + 每个 AWS 区域都有 Amazon ECS 服务域。必须允许这些服务域向外部实例发送流量。
  + 安装在外部实例上的 SSM Agent 维护使用硬件指纹每 30 分钟轮换一次的 IAM 凭证。如果您的外部实例与 AWS 断开连接，SSM Agent 会在重新建立连接后自动刷新凭证。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[使用硬件指纹验证本地部署服务器和虚拟机](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-technical-details.html#fingerprint-validation)。
  + 只要外部实例位于仅 IPv6 子网中，就可以在仅 IPv6 配置中在这些实例上运行 Linux 任务。有关更多信息，请参阅 [在仅 IPv6 模式下使用 VPC](task-networking.md#networking-ipv6-only)。
+ 不支持 `UpdateContainerAgent` API。有关如何更新外部实例上的 SSM Agent 或 Amazon ECS 代理的说明，请参阅 [更新外部实例上的 AWS Systems Manager 代理和 Amazon ECS 容器代理](ecs-anywhere-updates.md)。
+ 不支持 Amazon ECS 容量提供程序。要在外部实例上创建服务或运行独立任务，请使用 `EXTERNAL` 启动任务。
+ 不支持 SELinux。
+ 不支持使用 Amazon EFS 卷或指定 `EFSVolumeConfiguration`。
+ 不支持与 App Mesh 集成。
+ 如果您使用控制台创建外部实例任务定义，则必须使用控制台 JSON 编辑器来创建任务定义。
+ 当您使用非 Amazon ECS 优化的 AMI 时，请在外部容器实例上运行以下命令来配置规则，以便将 IAM 角色用于任务。有关更多信息，请参阅 [外部实例附加配置](task-iam-roles.md#enable_task_iam_roles)。

  ```
  $ sysctl -w net.ipv4.conf.all.route_localnet=1
  $ iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
  $ iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
  ```

### Networking
<a name="ecs-anywhere-networking"></a>

Amazon ECS 外部实例针对运行生成出站流量或处理数据的应用程序进行了优化。如果您的应用程序需要入站流量，例如web服务，则缺乏 Elastic Load Balancing 支持会降低运行这些工作负载的效率，因为不支持将这些工作负载置于负载均衡器之后。

以下是特定于与外部实例联网的其他注意事项。
+ 不支持服务负载平衡。
+ 不支持服务发现。
+ 在外部实例上运行的 Linux 任务必须使用 `bridge`、`host` 或 `none` 网络模式。不支持 `awsvpc` 网络模式。

  有关每种网络模式的更多信息，请参阅 [EC2 实例的 Amazon ECS 任务联网选项](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)。
+ 只要外部实例位于仅 IPv6 子网中，就可以在仅 IPv6 配置中在这些实例上运行 Linux 任务。有关更多信息，请参阅 [在仅 IPv6 模式下使用 VPC](task-networking.md#networking-ipv6-only)。
+ 每个区域都有 Amazon ECS 服务域，必须允许其向外部实例发送流量。
+ 安装在外部实例上的 SSM Agent 维护使用硬件指纹每 30 分钟轮换一次的 IAM 凭证。如果您的外部实例与 AWS 断开连接，SSM Agent 会在重新建立连接后自动刷新凭证。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[使用硬件指纹验证本地部署服务器和虚拟机](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-technical-details.html#fingerprint-validation)。

以下域用于 Amazon ECS 服务和安装在您的外部实例上的 Amazon ECS 代理之间的通信。确保允许流量并且 DNS 解析工作正常。对于每个端点，*区域*表示 Amazon ECS 支持的 AWS 区域的区域标识符，例如美国东部（俄亥俄州）区域 `us-east-2`。应允许使用所有区域的端点。对于 `ecs-a` 和 `ecs-t` 端点，应包含星号（例如，`ecs-a-*`）。
+ `ecs-a-*.region.amazonaws.com`— 托管任务时使用此端点。
+ `ecs-t-*.region.amazonaws.com`— 此端点用于托管任务和容器指标。
+ `ecs.region.amazonaws.com`— 这是 Amazon ECS 的服务端点。
+ `ssm.region.amazonaws.com ` — 这是 AWS Systems Manager 的服务端点。
+ `ec2messages.region.amazonaws.com` — 这是 AWS Systems Manager 用于在云中的 Systems Manager 代理和 Systems Manager 服务之间进行通信的服务端点。
+ `ssmmessages.region.amazonaws.com` — 这是使用云中的 Session Manager 服务创建和删除会话通道所需的服务端点。
+ 如果您的任务需要与任何其他 AWS 服务通信，请确保允许这些服务端点可用。示例应用程序包括使用 Amazon ECR 提取容器映像或使用 CloudWatch Logs 的 CloudWatch。有关更多信息，请参阅 *AWS 一般引用指南*中的[服务端点](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)。

### Amazon FSx for Windows File Server 与 ECS Anywhere
<a name="ecs-anywhere-fsx"></a>

**重要**  
Windows 对 Amazon ECS Anywhere 的支持已弃用。本部分内容不再适用。

要将 Amazon FSx for Windows File Server 与 Amazon ECS 外部实例结合使用，您必须在您的本地数据中心与 AWS 云 之间建立连接。有关将您的网络连接到 VPC 的选项的信息，请参阅 [Amazon Virtual Private Cloud 连接性选项](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html)。

### gMSA 与 ECS Anywhere
<a name="ecs-anywhere-gmsa"></a>

**重要**  
Windows 对 Amazon ECS Anywhere 的支持已弃用。本部分内容不再适用。

当 Windows 是支持的操作系统时，ECS Anywhere 支持以下使用案例。
+ Active Directory 位于 AWS 云 中：对于此配置，您将使用 AWS Direct Connect 连接在您的本地网络和 AWS 云 之间创建连接。有关如何创建连接的信息，请参阅 [Amazon Virtual Private Cloud 连接性选项](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html)。您可以在 AWS 云 中创建 Active Directory。有关如何开始使用 AWS Directory Service 的信息，请参阅 *AWS Directory Service 管理指南*中的[设置 AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/setting_up.html)。然后，您可以使用 AWS Direct Connect 连接将外部实例加入域。有关将 gMSA 与 Amazon ECS 结合使用的信息，请参阅 [了解了解如何将 gMSA 用于适用于 Amazon ECS 的 EC2 Windows 容器](windows-gmsa.md)。
+ Active Directory 位于本地数据中心。：对于此配置，您将您的外部实例加入到本地 Active Directory。然后，在运行 Amazon ECS 任务时，您可以使用本地可用的凭证。