dev*_*irl 2 syntax-error amazon-web-services terraform terraform-provider-aws terraform-modules
当我在版本 12.24 中运行 Terraform 计划时,收到错误:不受支持的参数。
Error: Unsupported argument
on .terraform/modules/app/main.tf line 261, in resource "aws_db_instance" "db_instance":
261: timeouts = {
An argument named "timeouts" is not expected here. Did you mean to define a
block of type "timeouts"?
Run Code Online (Sandbox Code Playgroud)
这是.tf文件中的代码:
timeouts = {
create = "${var.db_instance_create_timeout}"
update = "${var.db_instance_update_timeout}"
delete = "${var.db_instance_delete_timeout}"
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何修复这个错误。通过在超时后删除“=”修复了上述错误。
我还收到更多需要解决方案的错误:
Error: Unsupported argument
on .terraform/modules/rds/main.tf line 150, in resource "aws_db_parameter_group" "db_parameter_group":
150: parameter = concat(var.parameters, local.parameters[local.parameter_lookup])
An argument named "parameter" is not expected here. Did you mean to define a
block of type "parameter"?
Run Code Online (Sandbox Code Playgroud)
.tf文件中的代码:
parameter = concat(var.parameters, local.parameters[local.parameter_lookup])
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
小智 8
我正在从 GitHub复制对我有用的解决方案,并将功劳归于 HashiCorp 成员bflad:
在 Terraform 0.12(或更高版本)中,配置语言解析器对于参数和配置块之间的区别更加严格。这个错误:
这里不需要名为“XXX”的参数。您的意思是定义一个“XXX”类型的块吗?
通常意味着需要从参数赋值中删除=(等号),以便将其正确解析为配置块,例如
root_block_device {
Run Code Online (Sandbox Code Playgroud)
HCL语法中的这种区别可能看起来微不足道,但在幕后,这种更严格的类型检查允许与 JSON 语法保持一致。有关此更改的更多信息可以在 Terraform 0.12 升级指南中找到。说到这里,该指南确实指出了有用的 terraform 0.12upgrade 命令,该命令应该在从 Terraform 0.11 升级时自动修复 Terraform 配置中的此类问题。
| 归档时间: |
|
| 查看次数: |
10060 次 |
| 最近记录: |