AWS EC2实例中Terraform Plan/Apply卡住报错求助
解决Terraform Plan时STS请求超时的问题
排查及修复步骤
1. 检查EC2实例的出站网络权限
安全组入站开放不代表出站不受限,Terraform调用AWS API需要HTTPS(443端口)访问:
- 查看实例所在安全组的出站规则,确保允许443端口访问
0.0.0.0/0。 - 若使用了网络ACL,需同步确认出站规则允许443端口流量,入站规则允许HTTPS响应流量。
2. 验证AWS凭证与STS连通性
直接用AWS CLI测试STS服务是否可达:
- 执行命令:
aws sts get-caller-identity- 若返回
InvalidClientTokenId,说明aws configure配置的Access Key/Secret Key有误,重新核对后配置。 - 若命令超时,执行
curl https://sts.amazonaws.com测试网络连通性,确认实例能正常访问AWS服务端点。
- 若返回
3. 调整Terraform AWS Provider的超时配置
在provider.tf中增加超时参数,避免默认超时时间过短导致请求被取消:
provider "aws" { region = "你的AWS区域" retry_max = 5 timeout { create = "10m" update = "10m" delete = "10m" } }
同时确认region配置与实例所在区域一致,避免跨区域访问延迟过高。
4. 检查实例的DNS解析配置
无法解析AWS服务域名也会导致请求失败:
- 查看
/etc/resolv.conf,确认DNS服务器为VPC默认DNS(VPC IPv4地址末尾+2,比如VPC网段为10.0.0.0/16时,DNS为10.0.0.2)。 - 执行
nslookup sts.amazonaws.com测试域名解析,若失败,检查VPC的enableDnsSupport和enableDnsHostnames是否已开启。
5. 改用IAM角色替代长期凭证
避免Access Key/Secret Key的配置问题,给EC2实例附加IAM角色:
- 在AWS控制台创建带
AdministratorAccess权限的IAM角色,信任实体选择EC2。 - 给运行Terraform的EC2实例关联该角色,删除
~/.aws/credentials文件,Terraform会自动使用实例角色的临时凭证进行API调用。
内容的提问来源于stack exchange,提问作者kishore ram
相关产品推荐
相关产品推荐

