AWS Fargate部署Spring Boot:安全组与端口映射问题咨询
Fargate端口映射与安全组关系解析
先纠正一个误解:Fargate没有“预留EC2实例”
Fargate是AWS的无服务器容器服务,底层EC2实例完全由AWS托管,你不需要也看不到这些实例。你的Spring Boot应用容器直接绑定在VPC的弹性网络接口(ENI)上,拥有独立的网络身份(比如公网IP),和底层EC2没有直接的端口映射关系。
核心组件的端口逻辑
1. 安全组
安全组是针对Fargate任务ENI的虚拟防火墙,只负责放行外部到任务公网IP的入站流量,以及任务的出站流量。只有安全组里允许的端口,外部才能发起访问请求。
2. 任务定义的端口设置(awsvpc模式下)
在Fargate的任务定义「Networking」里配置的端口,是直接把容器内监听的端口和任务ENI的端口做绑定。举个例子:
- 如果你的Spring Boot应用在容器内监听8080端口,任务定义里配置了
容器端口8080 → 主机端口8080,那么外部访问http://<公网IP>:8080就会直接打到容器的8080端口。 - 如果你想让外部访问8085端口,必须同时满足两个条件:
- 安全组入站规则添加允许8085端口的流量(比如0.0.0.0/0)
- 任务定义里配置8085端口的映射,且容器内的应用确实在8085端口提供服务
你的问题排查点
你能访问8080但不能访问8085,原因基本是以下两个:
- 安全组的入站规则只开放了8080端口,没有添加8085的放行规则
- 任务定义里没有配置8085端口的映射,或者你的Spring Boot应用根本没在8085端口启动服务
总结端口映射链路
外部请求 → 安全组(检查是否放行目标端口)→ Fargate任务ENI的目标端口 → 直接转发到容器内对应的监听端口
内容的提问来源于stack exchange,提问作者Wrapper
相关产品推荐
相关产品推荐

