AWS ECS配置:如何让ALB指向容器3000端口?
修改CloudFormation堆栈让ALB指向容器3000端口的步骤
需要修改CloudFormation模板中的以下核心位置:
1. 任务定义(TaskDefinition)的容器端口映射
找到模板里的AWS::ECS::TaskDefinition资源,调整容器定义中的端口映射配置:
- 将
PortMappings里的ContainerPort从80改为3000; - 如果使用桥接网络模式且配置了
HostPort,可设为0让ECS自动分配端口(避免冲突),也可同步设为3000。
示例代码片段:
MyTaskDefinition: Type: AWS::ECS::TaskDefinition Properties: Family: !Ref TaskFamily NetworkMode: awsvpc ContainerDefinitions: - Name: my-node-app Image: !Ref AppImage PortMappings: - ContainerPort: 3000 # 此处从80修改为3000 Protocol: tcp # 其他容器配置项...
2. 目标组(TargetGroup)的端口配置
找到AWS::ElasticLoadBalancingV2::TargetGroup资源,同步修改目标端口和健康检查端口:
MyTargetGroup: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: Name: !Ref TargetGroupName Port: 3000 # 此处从80修改为3000 Protocol: HTTP VpcId: !Ref VpcId TargetType: ip HealthCheckProtocol: HTTP HealthCheckPort: 3000 # 健康检查端口也需同步改为3000 HealthCheckPath: /health # 其他目标组配置项...
3. 安全组规则调整
检查ECS任务对应的安全组(若为EC2启动类型则检查容器实例安全组),确保允许ALB的安全组访问3000端口:
ECSTaskSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow traffic for ECS tasks VpcId: !Ref VpcId SecurityGroupIngress: - SourceSecurityGroupId: !Ref ALBSecurityGroup IpProtocol: tcp FromPort: 3000 # 此处从80修改为3000 ToPort: 3000
4. 监听器规则验证(通常无需修改)
ALB的监听器(AWS::ElasticLoadBalancingV2::Listener)一般监听80/443端口并转发到目标组,这部分无需调整——因为目标组已经配置为指向容器3000端口,监听器只负责接收外部流量并转发即可。
修改完成后,更新CloudFormation堆栈即可生效。建议更新前先预览变更,确认修改的资源范围正确,避免影响现有服务。
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

