使用terraform-local测试模块遇meteringmarketplace参数不支持错误求助
修复Terraform-Local中AWS Provider的"meteringmarketplace"参数错误
问题详情
本地运行Terraform堆栈时触发如下错误:
Error: Unsupported argument
on localstack_providers_override.tf line 67, in provider "aws":
67: meteringmarketplace = "http://localhost:4566"An argument named "meteringmarketplace" is not expected here.
当前环境与资源:
- Terraform版本:v1.2.7
- Terraform-Local版本:v1.2.7
- 涉及资源:Node.js runtime的Lambda函数、API Gateway、CloudWatch日志组、IAM角色、S3对象及其他次要资源
解决方案
1. 修正参数配置位置
meteringmarketplace属于AWS服务的endpoint配置,不能直接写在provider "aws"的根层级,必须嵌套在endpoints块内。修改后的provider配置示例:
provider "aws" { region = "us-east-1" # 根据你的实际配置调整 # 其他全局配置(如LocalStack所需的占位access_key、secret_key) endpoints { meteringmarketplace = "http://localhost:4566" # 可按需添加其他LocalStack支持的服务endpoint,比如lambda、apigateway等 } }
2. 确保AWS Provider版本兼容
旧版本的Terraform AWS Provider可能不支持meteringmarketplace的endpoint配置。在你的Terraform配置文件中指定兼容的Provider版本:
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 3.70.0" # 此版本及以上支持Metering Marketplace的endpoint配置 } } }
执行terraform init -upgrade命令升级Provider到指定版本。
3. 验证LocalStack服务支持
确认你的LocalStack版本支持AWS Metering Marketplace服务(可通过localstack status services命令查看已启用的服务)。若该服务未被支持,可移除该endpoint配置,或升级LocalStack到支持该服务的版本。
内容的提问来源于stack exchange,提问作者Chase Denecke
相关产品推荐
相关产品推荐

