错误:不支持的参数:此处不期望名为 "validation" 的参数。您是指 "validation" 吗?
Error: Unsupported argument: An argument named "validation" is not expected here. Did you mean "validation"?
ID: terraform/unsupported-argument-in-variable
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| Terraform v0.12 | active | — | — | — |
| Terraform v0.13 | active | — | — | — |
| Terraform v1.0 | active | — | — | — |
根因分析
变量块包含对该变量类型无效的嵌套块或参数,通常是由于 Terraform 版本差异导致,其中变量验证是在 v0.13 中引入的。
English
A variable block contains a nested block or argument that is not valid for that variable type, often due to Terraform version differences where variable validation was introduced in v0.13.
官方文档
https://developer.hashicorp.com/terraform/language/values/variables#custom-validation-rules解决方案
-
Update the required_version in terraform block: `terraform { required_version = ">= 0.13" }` then rerun `terraform init` to use a compatible Terraform version. -
Remove the unsupported argument (e.g., validation block) and implement validation using a separate data source or condition in a local value.
-
If using Terraform v0.12, upgrade to v0.13+ using the official upgrade guide: https://developer.hashicorp.com/terraform/upgrade-guides/0-13.
无效尝试
常见但无效的做法:
-
Renaming the argument to the suggested name without checking the Terraform version
90% 失败
The error often occurs because the feature (e.g., variable validation) doesn't exist in older versions; renaming won't help if the underlying feature is unsupported.
-
Moving the argument to a different block like locals or outputs
70% 失败
Validation logic belongs to variable declarations; moving it elsewhere won't enforce input constraints and may cause runtime errors.
-
Adding a required_providers block with a newer version but not updating the Terraform version constraint
85% 失败
Variable validation is a language feature, not provider-specific; the Terraform core version must be >=0.13 for validation blocks to work.