Terraform在EU-CENTRAL-1区域Jenkins环境运行卡住故障求助
AWS + Terraform 欧盟中部(EU-CENTRAL-1)区域Lambda接口超时排查方案
环境组件版本
- Terraform
v0.14.8 - provider
registry.terraform.io/hashicorp/archivev2.2.0 - provider
registry.terraform.io/hashicorp/awsv3.55.0
问题现象
- 本地设备运行正常
- 本地Jenkins Docker容器内运行正常
- US-WEST-2区域相同Docker镜像的Jenkins环境运行正常
- EU-CENTRAL-1区域相同Docker镜像的Jenkins环境运行卡住,Debug日志如下:
2021-08-24T20:16:08.901Z [INFO] plugin.terraform-provider-aws_v3.55.0_x5: 2021/08/24 20:16:08 [DEBUG] [aws-sdk-go] DEBUG: Send Request lambda/GetLayerVersion failed, attempt 25/25, error RequestError: send request failed caused by: Get "https://lambda.eu-central-1.amazonaws.com/2018-10-31/layers/awswrangler/versions/2": dial tcp 3.121.178.128:443: i/o timeout: timestamp=2021-08-24T20:16:08.901Z
后续依赖该资源的所有DAG节点均因上游错误被跳过
已尝试操作
- 升级Terraform到最新版本
- 销毁所有已部署资源
- 删除S3中存储的所有状态文件
以上操作均未解决问题
排查方案
第一步:验证故障环境的网络连通性
直接在EU-CENTRAL-1区域的Jenkins容器内执行诊断命令:- 测试域名解析:
nslookup lambda.eu-central-1.amazonaws.com,确认返回IP是否与日志中3.121.178.128一致,排除DNS污染问题 - 测试端口连通性:
nc -zv lambda.eu-central-1.amazonaws.com 443,如果超时直接证明网络链路不通 - 测试全链路请求:
curl -v https://lambda.eu-central-1.amazonaws.com/2018-10-31/layers/awswrangler/versions/2,同时确认故障环境的IAM权限是否允许调用GetLayerVersion接口
- 测试域名解析:
第二步:排查网络访问控制限制
- 确认Jenkins运行所在VPC的出站流量规则,是否允许访问公网443端口
- 如果Jenkins部署在私有子网,检查NAT网关/出站代理配置,是否将eu-central-1区域AWS服务域名加入允许列表,是否存在代理超时配置过短的问题
- 检查区域级网络ACL规则,是否拦截了Lambda服务公网IP的出站流量
第三步:排查VPC端点配置问题
如果EU-CENTRAL-1区域配置了Lambda的VPC端点(PrivateLink),检查:- 端点安全组入站规则是否允许Jenkins所在网段的443端口访问
- 端点私有DNS是否开启,确保域名解析指向私有端点IP而非公网IP
- 确认端点所在子网的路由表配置正常
第四步:临时规避方案
网络问题短时间无法定位时,可直接修改Terraform代码,指定awswrangler层的ARN跳过GetLayerVersion查询步骤,也可以提前把层文件下载到本地,用本地文件直接部署Lambda层,避免调用公网接口。
内容的提问来源于stack exchange,提问作者igor
相关产品推荐
相关产品推荐

