如何使用 terraform 读取 tfstate 中的第二个块?

how to read second block in tfstate with terraform?

我在 s3 上有一个远程状态,我不知道如何访问 tfstate json 文件的第二个块。

我的 tfstate 看起来像这样:

{
    "version": 3,
    "terraform_version": "0.11.7",
    "serial": 1,
    "lineage": "79b7840d-5998-1ea8-2b63-ca49c289ec13",
    "modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {},
            "depends_on": []
        },
        {
            "path": [
                "root",
                "vpc"
            ],
            "outputs": {
                "database_subnet_group": {
all my resources are listed here...
}

我可以通过以下代码访问它:

data "terraform_remote_state" "network" {
  backend = "s3"
  config = {
    bucket = "bakka-tfstate"
    key    = "global/network.tfstate"
    region = "eu-west-1"
  }
}

但输出

output "tfstate" {
  value = data.terraform_remote_state.network.outputs
}

什么都没显示

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

tfstate = {}

我相信这是因为这个 tfstate 中有两个 json 块,terraform 读取第一个是空的,所以我想问如何读取第二个?

只有根输出可以通过远程状态访问。此限制为 documented here。它还提出了一个解决方案 - 在生成您所指状态的项目中,您需要将输出线程化到根输出。