AWS::ECS::Service LoadBalancer - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::ECS::Service LoadBalancer

LoadBalancer 属性指定与某个服务一起使用的负载均衡器的详细信息。

如果该服务正在使用 ECS 部署控制器,您只能使用一个负载均衡器或目标组。

如果该服务正在使用 CODE_DEPLOY 部署控制器,则需要该服务才能使用 Application Load Balancer 或 Network Load Balancer。如果您创建的是 AWS CodeDeploy 部署组,则指定两个目标组(称为 targetGroupPair)。每个目标组绑定到部署中的一个单独任务集。负载均衡器还可以包含最多两个侦听器,一个必需侦听器可用于生产流量,一个可选侦听器允许您在将生产流量路由到服务之前测试服务的新修订版本。

具有使用 awsvpc 网络模式的任务(例如,那些 Fargate 启动类型的任务)的服务仅支持 Application Load Balancer 和 Network Load Balancer。不支持 Classic Load Balancer。此外,当您为这些服务创建任何目标组时,必须选择 ip 而不是 instance 作为目标类型。使用 awsvpc 网络模式的任务与弹性网络接口而不是 Amazon EC2 实例关联。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "ContainerName" : String, "ContainerPort" : Integer, "LoadBalancerName" : String, "TargetGroupArn" : String }

YAML

ContainerName: String ContainerPort: Integer LoadBalancerName: String TargetGroupArn: String

属性

ContainerName

要与负载均衡器关联的容器的名称(与在容器定义中显示的相同)。

必需:否

类型:字符串

Update requires: Replacement

ContainerPort

要与负载均衡器关联的容器上的端口。此端口必须对应于服务中的任务正在使用的任务定义中的 containerPort。对于使用 EC2 启动类型的任务,启动它们的容器实例必须允许端口映射的 hostPort 上的入口流量。

必需:是

类型:整数

Update requires: Replacement

LoadBalancerName

要与 Amazon ECS 服务或任务集关联的负载均衡器的名称。

负载均衡器名称仅在使用 Classic 负载均衡器时指定。如果您使用的是 Application Load Balancer 或网络负载均衡器,则应省略负载均衡器参数。

必需:否

类型:字符串

Update requires: Replacement

TargetGroupArn

Elastic Load Balancing 目标组或与服务或任务集关联的组的完整 Amazon 资源名称 (ARN)。

目标组 ARN 仅在使用应用程序负载均衡器或网络负载均衡器时指定。如果您使用的是 Classic Load Balancer,则应省略目标组 ARN。

对于使用 ECS 部署控制器的服务,您可以指定一个或多个目标组。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的向服务注册多个目标组

对于使用 CODE_DEPLOY 部署控制器的服务,您需要为负载均衡器定义两个目标组。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的使用 CodeDeploy 进行蓝/绿部署

重要

如果您的服务任务定义使用 awsvpc 网络模式( Fargate 启动类型需要该网络模式),在创建目标组时,必须选择 ip 作为目标类型而非 instance,因为使用 awsvpc 网络模式的任务与弹性网络接口关联,而不是与 Amazon EC2 实例关联。

必需:否

类型:字符串

Update requires: Replacement