AWS CodeBuild构建无网络连接求助:同子网EC2可正常联网
解决AWS CodeBuild网络连接失败的问题
我之前调试CodeBuild项目时也碰到过一模一样的报错,结合AWS实操经验和官方文档,给你几个针对性的排查方向(毕竟你已经验证过同子网EC2能正常联网,问题大概率出在CodeBuild的专属配置上):
检查CodeBuild项目的「分配公网IP」设置
这是最容易踩的坑!即使你的子网是绑定了互联网网关(IGW)的公有子网,如果CodeBuild项目没有开启「分配公网IP」,构建容器还是无法获取公网IP,自然没法访问外部网络。
操作路径:打开CodeBuild项目 → 编辑项目 → 找到「VPC」配置区域 → 确认「Assign public IP」选项设置为ENABLED。
(补充:如果构建在私有子网中运行,必须确保私有子网的路由表指向NAT网关,同时NAT网关所在的公有子网有正确的IGW路由)验证CodeBuild所用安全组的出站规则
你测试EC2用的安全组没问题,但CodeBuild项目可能绑定了另一个安全组。请检查这个安全组的出站规则:- 至少允许向
0.0.0.0/0放行HTTPS(443端口)和HTTP(80端口)流量; - 如果需要ping测试,还要放行ICMP协议的出站请求。
- 至少允许向
检查子网的网络ACL(NACL)配置
网络ACL是子网级别的无状态防火墙,容易被忽略。请确认:- 出站规则允许
0.0.0.0/0的80、443端口流量; - 入站规则允许临时端口范围(1024-65535)的流量(因为外部服务的响应会通过这些端口返回,NACL是无状态的,需要显式放行)。
你的EC2能正常联网,说明NACL大概率没问题,但还是建议核对一下,避免CodeBuild的流量被意外拦截。
- 出站规则允许
排查VPC端点的潜在影响
如果你给VPC配置了S3或其他服务的端点,检查端点的路由策略是否限制了外部流量访问。比如,是否把所有0.0.0.0/0的路由都指向了端点而不是IGW/NAT网关?不过你EC2能正常联网,这个可能性相对较低,但可以快速核对路由表确认。
先从「分配公网IP」这个选项开始排查,我当时就是因为漏开了这个,折腾了好半天😅。
内容的提问来源于stack exchange,提问作者John Keyes
相关产品推荐
相关产品推荐

