terraform数据源远程状态不';行不通

terraform数据源远程状态不';行不通,terraform,Terraform,我有以下地形: data "terraform_remote_state" "stack" { backend = "local" config { path = "terraform.tfstate" } } output "diditwork" { value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}" } 我在同一文件夹中有一个terraform.tfstate文件

我有以下地形:

data "terraform_remote_state" "stack" {
  backend = "local"

  config {
    path = "terraform.tfstate"
  }
}
output "diditwork" {
  value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}"
}
我在同一文件夹中有一个terraform.tfstate文件:

{
    "version": 3,
    "terraform_version": "0.9.3",
    "serial": 14,
    "lineage": "dc16a61f-72dd-435b-ba3f-5e36e14aace2",
    "modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {
                "aws_autoscaling_group.main": {
                    "type": "aws_autoscaling_group",
                    "depends_on": [
                        "aws_launch_configuration.lc"
                    ],
                    "primary": {
                        "id": "djin-sample-asg-stag",
                        "attributes": {
                            "arn": "arn:aws:autoscaling:us-east-1:174120285419:autoScalingGroup:04c470fa-45f8-4711-aa31-b3ede40d6…
但是由于某种原因,当我执行地形应用时,我的输出不会为自动缩放组id打印任何内容。应用是成功的,它甚至没有抛出任何错误我遗漏了什么?

这是错误的

  value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}"
您只能在数据中获取根级别的输出

只有来自远程状态的根级别输出才可访问。 无法访问状态内模块的输出。如果你愿意 要通过远程状态访问模块输出,您必须 从输出到根输出

因此,您首先需要输出自动缩放id,例如:

output "asg_id" {
 value = "${aws_autoscaling_group.main.id}"
}
然后在数据获取中,你会

output "diditwork" {
  value = "${data.terraform_remote_state.stack.asg_id}"
}

另外,对于支持锁定的后端(或者对于您真正想要使用锁定的场景),在同一位置上执行远程数据源通常是个坏主意。我假设您从同一位置进行远程数据源只是为了实验,因此不会造成任何伤害,但在实际使用中,您应该只使用上面输出中使用的值。

是的,仅用于实验。计算了根输出,但看到您也回答了!我现在还有一个问题,那就是可以在一个模块中使用这个数据源,然后使用该模块输出diditwork?似乎对我不起作用。我再问一个问题。