Terraform 地形资源没有变量的属性

Terraform 地形资源没有变量的属性,terraform,Terraform,正在运行Terraform 0.11.7并出现以下错误: module.frontend_cfg.var.web_acl: Resource 'data.terraform_remote_state.waf' does not have attribute 'waf_nonprod_id' for variable 'data.terraform_remote_state.waf.waf_nonprod_id' 下面是创建上面引用的tfstate文件的文件。此文件在生成时没有问题 resourc

正在运行Terraform 0.11.7并出现以下错误:

module.frontend_cfg.var.web_acl: Resource 'data.terraform_remote_state.waf' does not have attribute 'waf_nonprod_id' for variable 'data.terraform_remote_state.waf.waf_nonprod_id' 下面是创建上面引用的tfstate文件的文件。此文件在生成时没有问题

resource "aws_waf_web_acl" "waf_fe_nonprod"
{
    name        = "fe_nonprod_waf"
    metric_name = "fenonprodwaf"

    default_action
    {
        type = "ALLOW"
    }
}

output waf_nonprod_id
{
    value = "${aws_waf_web_acl.waf_fe_nonprod.id}"
}
我将保留cloudfront文件的完整输出,但是,以下内容涵盖了文本:

resource "aws_cloudfront_distribution" "fe_distribution"
{
    web_acl_id          = "${var.web_acl}"
}

如果我将waf ID的ID放入web_acl变量中,它工作得很好,因此我怀疑问题与调用数据的方式有关。但这似乎与文档相符。

在terraform\u remote\u状态下使用路径而不是名称,

我用terraform版本0.11.7和0.11.14测试了它


如果将terraform升级到版本0.12.x,则使用远程状态输出的语法已更改。 所以改变

web_acl       = "${data.terraform_remote_state.waf.waf_nonprod_id}"

data "terraform_remote_state" "waf" {
  backend = "local"
  config = {
    path = "../../../global/waf/terraform.tfstate"
  }
}
data "terraform_remote_state" "waf" {
  backend = "local"
  config = {
    path = "${path.module}/../../../global/waf/terraform.tfstate"
  }
}
web_acl       = "${data.terraform_remote_state.waf.waf_nonprod_id}"
web_acl       = data.terraform_remote_state.waf.outputs.waf_nonprod_id
web_acl       = "${data.terraform_remote_state.waf.outputs.waf_nonprod_id}"