Terraform调用子模块传递AWS Provider时出现警告问题求助
解决Terraform模块传递Provider时的警告问题
问题原因
你遇到的警告是因为子模块qa-aws-waf-common未在自身配置中声明依赖aws provider。Terraform 0.13及以后版本强制要求所有模块必须明确声明所需的provider,根模块向子模块传递provider配置时,子模块必须先在required_providers块中注册该provider。
解决步骤
- 进入子模块目录
../modules/qa-aws-waf-common,创建或编辑terraform.tf文件。 - 在文件中添加
required_providers块,声明对aws provider的依赖,建议和根模块的版本约束保持一致:
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 4.33.0" # 与根模块版本匹配,避免兼容性问题 } } }
- 保存文件后重新运行Terraform命令,警告即可消除。
补充说明
- 如果子模块中已经存在使用
awsprovider的资源(比如aws_wafv2_web_acl),但之前未添加required_providers声明,补上后Terraform就能明确识别模块对该provider的依赖,此时根模块传递的aws.useastone配置会被正确关联。 - 保持子模块与根模块的aws provider版本一致,能有效避免因版本差异引发的功能兼容问题。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

