Linux EC2部署Terraform栈遇GRPCProvider请求取消错误求助
在Linux EC2实例部署Terraform栈时,随机触发以下错误:
The plugin.(*GRPCProvider).ApplyResourceChange request was cancelled.
The plugin.(*GRPCProvider).PlanResourceChange request was cancelled.
The plugin.(*GRPCProvider).ValidateResourceConfig request was cancelled.
使用Terraform版本为1.3.1_linux_amd64、1.3.5_linux_amd64,本地Mac同版本部署无异常,provider配置如下:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.0" } } } provider "aws" { region = "us-east-1" }
解决方法
检查EC2实例资源限制
Linux EC2实例CPU、内存不足时,系统会强制终止Terraform的provider插件,引发请求取消错误。用top或htop命令监控部署时的资源峰值,若资源不足,升级实例规格或关闭其他占用资源的进程。优化网络连接稳定性
EC2与AWS服务的网络不稳定可能导致GRPC请求超时:- 确认实例所在VPC路由表、安全组配置正确,允许443端口出站访问AWS服务;
- 在AWS provider中延长API请求超时:
provider "aws" { region = "us-east-1" timeout { create = 300 update = 300 delete = 300 } }
固定AWS Provider版本
~>4.0会自动更新到4.x最新版,部分版本可能存在Linux环境下的GRPC兼容问题。尝试固定稳定版本,比如4.67.0:terraform { required_providers { aws = { source = "hashicorp/aws" version = "=4.67.0" } } }执行
terraform init -upgrade更新provider。延长插件超时时间
设置环境变量延长Terraform与插件的GRPC通信超时:export TF_PLUGIN_TIMEOUT=300s可在执行
terraform plan/apply前临时设置,或写入实例的~/.bashrc/~/.profile持久生效。清理Terraform缓存
EC2上的缓存文件损坏可能引发随机错误,执行以下命令清理后重新初始化:rm -rf .terraform/ rm -rf .terraform.lock.hcl terraform init
内容的提问来源于stack exchange,提问作者David

