如何访问两个不同的 Terraform 代码之间的资源 ID

How to access the resource ids between two different terraform code

我有 2 个 aws 账户,分别有相应的 terraform 代码: 在 account_no_01 中,我有一个 tgw 模块

module "transit-gateway" {}

在account_no_02中,我想获取账号1中创建的tgw的id:

resource "aws_ec2_transit_gateway_vpc_attachment" "tgw_nprod" {
  subnet_ids         = [module.vpc.private_subnets[0]]
  transit_gateway_id = "TGW ID HERE FROM ACCOUNT 01 CREATED WITH MODULE"
  vpc_id             = module.vpc.vpc_id
}

目录结构是这样的: /acount01/main.tf and /account02/main.tf

如果两个账户由一个状态文件管理,可以使用module outputs

如果两个帐户是单独创建的,您可以在 terraform 中使用数据模块来引用不受 terraform 管理或由不同状态文件管理的资源。

记录了中转网关数据资源的关键选项here

最简单的方法是在您的帐户 2 构建的配置中添加 ID 值,并以这种方式引用它。如果那不可能,您可以在标签中添加一个友好的名称,并使用过滤器在其他地方找到它:

data "aws_ec2_transit_gateway" "tgw" {
  filter {
    name   = "tag:Name"
    values = ["my-transit-gw"]
  }
}