无网络环境EC2实例运行terragrunt apply遇卡求助
受限网络下Terragrunt EC2环境部署问题解决方案
一、必须配置的通用VPC端点
除了你已配置的STS、S3、DynamoDB、CodeArtifact,还得加上这些:
- EC2端点:
com.amazonaws.<region>.ec2,Terraform查询实例类型、AMI、子网等EC2资源时会调用其API,没有这个会卡住资源查询环节。 - EC2 Messages端点:
com.amazonaws.<region>.ec2messages,实例与AWS系统消息服务交互需要,部分场景下Terraform依赖该服务完成资源状态同步。 - SSM端点:
com.amazonaws.<region>.ssm,如果代码涉及SSM参数、实例关联SSM管理,必须配置;就算没直接用,部分AWS SDK调用也会依赖SSM的基础服务。 - SSM Messages端点:
com.amazonaws.<region>.ssmmessages,和SSM会话管理相关,避免因会话连接请求被拦截导致卡住。
二、按需添加的VPC端点(根据部署资源)
根据你要部署的AWS服务,对应添加端点:
- 部署RDS:加
com.amazonaws.<region>.rds和com.amazonaws.<region>.rds-data - 部署Lambda:加
com.amazonaws.<region>.lambda - 部署CloudWatch:加
com.amazonaws.<region>.monitoring(指标)和com.amazonaws.<region>.logs(日志) - 部署VPC相关资源(比如安全组、NAT网关):确保EC2端点已配置即可
三、必须白名单的域名
除了registry.terraform.io,还要放行这些:
terraform.io:Terraform CLI会拉取provider元数据、版本更新信息releases.hashicorp.com:如果需要在线下载Terraform/Terragrunt二进制包、provider插件,必须放行;如果已经提前离线下载好,可跳过- 第三方provider域名:如果用了非官方provider,比如托管在GitHub的插件,要加
github.com
四、关键配置修正建议
- 端点地址用内网域名:你当前provider配置里的STS、S3等端点用的是公网地址,虽然VPC内会自动解析到端点,但建议直接用VPC端点的内网专属域名(比如
vpce-xxxxxx.sts.ap-southeast-1.vpce.amazonaws.com),同时确保VPC启用了enableDnsHostnames和enableDnsSupport,保证内网DNS解析正常。 - S3后端用网关端点:远程状态的S3后端必须用网关类型的VPC端点,并且把关联路由表指向该端点,确保Terragrunt读写状态文件走内网。
- 离线缓存provider:完全无网络的话,提前把所需版本的AWS Provider插件下载到
~/.terraform.d/plugins目录,这样就不用访问registry拉取,避免网络依赖。 - 日志定位问题:设置环境变量
TF_LOG=DEBUG和TERRAGRUNT_LOG=DEBUG,运行terragrunt apply时查看详细日志,找到卡住时正在调用的API,就能精准定位缺哪个端点或域名。
内容的提问来源于stack exchange,提问作者Ben L
相关产品推荐
相关产品推荐

