如何在AWS ECS Fargate+GitHub Actions CI/CD中配置静态IP?
解决ECS Fargate静态IP绑定域名的方案
针对你遇到的动态IP和ALB配置问题,这里有几个实用的解决方案:
方案一:使用ALB + IP类型目标组(推荐)
你之前配置ALB失败是因为选错了目标组类型,Fargate不需要EC2实例,应该用IP类型目标组:
- 创建IP目标组:在EC2控制台的目标组页面,选择「IP」作为目标类型,端口填你的应用监听端口,VPC选择和Fargate集群一致的,健康检查路径设为应用的健康检查端点(比如
/health)。 - 创建应用负载均衡器:选择「Internet-facing」,VPC和子网要和Fargate任务所在的可用区匹配,安全组开放80(HTTP)或443(HTTPS)端口。
- 配置ALB监听:添加监听规则,把80/443端口的流量转发到刚才创建的IP目标组。
- 更新ECS服务:在ECS服务的负载均衡配置里,关联刚才的ALB和目标组。之后Fargate任务启动时会自动把私有IP注册到目标组,ALB会自动路由流量,你只需要把域名解析到ALB的DNS地址即可,ALB地址是固定的。
方案二:使用AWS Global Accelerator获取静态Anycast IP
如果需要全球范围内的稳定静态IP,可以用Global Accelerator:
- 创建Global Accelerator:在控制台创建加速器,AWS会分配2个静态Anycast IP(全球唯一)。
- 配置端点组:选择Fargate任务所在的区域,添加ECS服务或者刚才的ALB作为端点。
- 映射端口:把加速器的端口(比如80)映射到应用的监听端口。
- 绑定域名:把域名解析到Global Accelerator的静态IP或者它提供的DNS域名,流量会通过AWS全球网络路由到你的Fargate任务,IP不会随任务变化。
方案三:给Fargate任务绑定弹性IP(EIP)
适合单任务、不需要扩缩容的场景:
- 创建弹性IP:在EC2控制台创建EIP,确保和Fargate任务在同一区域。
- 修改任务定义:将网络配置里的「Assign public IP」设为
ENABLED。 - 绑定EIP:部署任务时,通过AWS CLI命令
aws ec2 associate-address把EIP绑定到任务的弹性网络接口(ENI),可以把这个命令集成到你的GitHub Actions CI/CD流程里,每次部署后自动绑定。 - 绑定域名:把域名解析到这个EIP即可,但要注意任务重启后需要重新执行绑定操作,所以必须自动化这个步骤。
内容的提问来源于stack exchange,提问作者Anatoliy
相关产品推荐
相关产品推荐

