用户登录

技术文章

外部链接将在新标签页打开。

容器服务的账户级入口:托管 ingress 的监听、健康检查与 TLS 终止边界

一句话回答

Amazon ECS Gateway 把 ingress 基础设施收归账户级网关:平台团队集中定义子网、安全组、TLS 证书、监听设置与 WAF,应用团队在创建或更新服务时添加 gateway connector,由 ECS 生成每服务的 ACM 证书、唯一 DNS 主机名、监听规则、目标组和只允许 ALB 入站的安全组。监听协议与端口、VPC、子网、scheme 等创建后不可变更;maxAlbCount 默认 10,容量耗尽会导致部署失败。TLS 终止点落在 ALB,但网关级证书与每服务 ACM 证书的分工、ALB 到任务的传输是否加密,材料未展开,需查官方文档。健康检查在 connecto

Amazon ECS Gateway 的核心变化可以用一句话说清:把 ingress 从“每个服务配一套 ALB、证书、WAF 和安全组”改为“账户级网关加服务级连接器”。平台团队在网关上一次性定义子网、安全组、TLS 证书、监听设置和 WAF;应用团队只在创建或更新服务时添加一个 gateway connector,ECS 就会在账户内为该服务生成 ACM 证书、唯一 DNS 主机名、监听规则、目标组,以及只允许 ALB 入站的服务安全组。AWS 于 2026 年 10 月 20 日发布的 ECS Gateway 说明把这种分工描述为平台团队与应用程序团队之间的职责分离。

对开发者来说,真正需要划清边界的地方有三处:监听器与共享 ALB 的容量、TLS 证书在哪一层生效、健康检查由谁定义又在哪里观测。下面按这三条展开,并明确标出材料没有展开、需要查阅官方文档确认的部分。

账户级入口:谁定义什么#

网关是账户级资源,底层 ALB 等基础设施仍然创建在你自己的账户里。平台团队创建网关时选定负载均衡 scheme(公网或 VPC 内部)、子网、IP 地址类型、监听器、端口、网关可扩展到的最大负载均衡器数量,以及用于防护的 web ACL;随后把网关关联到一个或多个 ECS 集群。这种关联是多对多的:一个网关最多可关联 10,000 个集群,一个集群最多可关联 5 个网关,因此同一个集群可以同时挂公网和私网两个入口。

角色负责定义边界说明
平台团队网关的子网、安全组、TLS 证书、监听设置、WAF web ACL、scheme、maxAlbCount名称、scheme、VPC、子网、IP 地址类型、监听协议与端口在创建后不可更改
应用团队在 CreateService 或 UpdateService 中加入 gateway connector,指定 portName、accessTypes 过滤器和 healthCheck不需要直接创建或同步 ALB、证书和安全组
ECS分配 ALB 容量,创建每服务的 ACM 证书、DNS 主机名、监听规则、目标组和服务安全组,并管理回收资源创建在账户内,生命周期跟随服务连接状态

监听器与共享 ALB 的容量边界#

ECS Gateway 使用 ALB 做基于主机名的路由,最多允许 25 个服务共享一个 ALB。服务连接时,ECS 会在有可用容量的 ALB 上分配位置;如果没有现成容量,就新建一个 ALB,直到达到 maxAlbCount。该值默认配额为 10,达到上限且没有可用容量时,部署会失败。这不是一个可以事后补救的软限制:它直接决定一次部署能否完成,因此需要按预期接入的服务数量提前规划。

网关一旦创建,名称、scheme、VPC、子网、IP 地址类型、监听协议和端口都不能再改。这意味着监听端口与协议属于长期决策,后续调整通常要新建网关并迁移服务,而不是原地修改。若确实需要变更,应把迁移步骤写进变更方案,而不是假设控制台可以改。

服务与网关能否连接,取决于三个条件同时满足:网关的访问类型匹配 connector 的过滤器;网关与服务处于同一 VPC;网关覆盖服务所配置子网使用的所有可用区。任一条件不满足,该网关就不会被连接。

TLS 终止:证书放在哪一层#

从材料描述看,TLS 的终止点在 ALB:平台团队在网关层配置 TLS 证书和监听设置,客户端握手落在 ALB 监听器上,再由监听规则按主机名转发到服务目标组。这是根据“监听器加证书”这一配置方式作出的推断,材料没有逐句说明终止动作发生在哪个组件。

需要区分的是两层证书。网关层由平台团队定义 TLS 证书;每条服务连接时,ECS 又会创建该服务的 ACM 证书和唯一 DNS 主机名。两者如何分工、谁覆盖谁、证书续期由哪一层负责,本次材料没有展开到足以给出确定结论,应以 Amazon ECS Gateway 官方文档为准。同样待核实的是 ALB 到任务这一段是否加密:材料只说明服务安全组仅允许来自 ALB 的入站流量,没有说明这段链路的传输加密方式,不能据此推断为明文或加密。

可以确定的是,每个服务都会获得一个可直接使用的唯一 DNS 主机名。对客户端来说,这个主机名比共享 ALB 的地址更稳定;把共享 ALB 的 DNS 名称写进客户端配置,会在 ALB 扩容或回收时带来不必要的耦合。

健康检查:连接器里的一项,目标组上的一次检查#

服务示例中的 gateway connector 包含 healthCheck 字段,但材料把它简写为 {...},没有给出路径、间隔、超时、健康与不健康阈值等具体参数。这些默认值和可配置范围需要查文档确认,不能从示例反推。

可观测性方面,材料给出了明确口径:用 CloudWatch 的 TargetGroup 维度看单个服务的流量,用 LoadBalancer 维度看共享 ALB 的整体流量;用 describe-target-health 查看实时目标状态;对 HealthyHostCount、TargetResponseTime、HTTPCode_Target_5XX_Count 配置告警,并利用基于网关 ARN 的标签让监控随 maxAlbCount 自动扩展。共享 ALB 场景下,一个服务的 5XX 会同时体现在两个维度里,归因时应先看 TargetGroup 维度,再看 LoadBalancer 维度,避免把单服务故障误判为整个入口故障。

生命周期:部署时重算,删除时回收#

每次部署,ECS 都会重新评估集群关联的网关。上次部署后新增的兼容网关会被连接;被取消关联的网关会断开,对应路由被删除。服务始终反映部署时刻的集群网关状态。服务删除时,ECS 自动断开所有网关、删除全部路由并清理每服务资源;如果该服务是某个 ALB 上的最后一条路由,这个 ALB 也会被回收。

已有独立负载均衡器的服务可以增量迁移:调用 UpdateService 添加 gateway connector,原有 ingress 路径继续可用,验证新连接后再移除旧配置。这条路径的价值在于把迁移拆成可回退的两步,而不是一次性切换。需要注意的是,ALB 可能被回收,任何依赖固定 ALB 名称或地址的外部配置都应改为依赖服务自己的唯一主机名。

网络与可用区的前置条件#

ECS Gateway 面向使用 awsvpc 网络模式的 ECS 服务,覆盖 EC2、Fargate 和 ECS Managed Instances 三种启动类型。服务的可用区必须是集群上每个网关可用区的子集;网关 ALB 只会把流量路由到它有子网的那些可用区中的任务。材料建议为同一集群的网关和服务使用相同的可用区集合,这是减少“服务已就绪但入口不可达”这类问题的直接办法。

一段未执行的 CLI 示例#

下面的命令按发布说明中的示例结构整理,本次未在真实账户执行,仅用于说明参数关系。账号、ARN 和子网 ID 均为文档中的占位值,请替换为自己的值;为缩短篇幅,子网列表做了删减。

# 未执行示例:创建一个账户级网关
aws ecs create-gateway \
  --name my-team-gateway \
  --infrastructure-role-arn arn:aws:iam::123456789012:role/ECSGatewayRole \
  --configuration '{
    "HostSharedAlb": {
      "networkConfiguration": {
        "subnets": ["subnet-xxxxxxxx", "subnet-yyyyyyyy"],
        "ipAddressType": "ipv4"
      },
      "scheme": "internet-facing"
    }
  }'

# 未执行示例:把网关关联到集群
aws ecs associate-gateway-with-cluster \
  --gateway my-team-gateway \
  --cluster arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster

# 未执行示例:创建服务时添加 gateway connector
aws ecs create-service \
  --cluster my-cluster \
  --service my-api-service \
  --task-definition my-api-service:1 \
  --gateway-connectors '[{ "portName": "api", "filters": {"accessTypes": ["PUBLIC"]}, "healthCheck": {} }]'

示例里的 healthCheck 被写成空对象,只是为了保持命令可读,并不代表实际可用的配置;真实字段需按文档填写。

计费与可用性#

按发布说明,ECS Gateway 在所有 ECS 可用的商业区域提供,本身不额外收费;你只为服务连接后账户内实际创建的底层资源付费,包括 ALB、CloudWatch 日志与指标、ACM 证书和数据传输。具体计费口径与各区域价格以 Amazon ECS 定价页为准,本次材料未给出价格数字,不做推测。

上线前核对清单#

  • 监听协议与端口是否已按长期需求选定——创建后不可更改。
  • 服务使用的可用区是否为网关可用区的子集,是否按建议保持同一集合。
  • maxAlbCount 是否按预期服务数规划,默认 10 是否足够。
  • connector 的 accessTypes 过滤器是否与网关 scheme 匹配,服务与网关是否同 VPC。
  • 迁移期是否保留旧负载均衡器路径,并安排验证后再移除。
  • 告警是否同时覆盖 TargetGroup 与 LoadBalancer 两个维度,标签是否基于网关 ARN。
  • 证书归属、续期责任和 ALB 到任务的传输方式是否已向平台团队确认,并写入运行手册。

把这些边界先定下来,账户级入口才真正减少重复配置,而不是把不确定性从每个服务转移到一个更大的共享组件上。

参考来源

  1. Introducing Amazon ECS Gateway: A fully-managed ingress solution for ECS services

以上为本文写作时的参考资料,引用观点以原文为准。

作者:沐小悠

本文约 12 分钟读完 · 关键词:Amazon ECS Gateway、托管 ingress、ALB 监听器、TLS 终止、健康检查

更多文章 GET 示例接口

「」标签下的其他文章