Как получить доступ к идентификаторам ресурсов между двумя разными кодами terraform

У меня есть 2 аккаунта aws с соответствующим кодом terraform для него: скажем, в account_no_01 у меня есть модуль tgw

module "transit-gateway" {}

В account_no_02 я хочу получить идентификатор созданного tgw в учетной записи 1:

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


person SUBHAS PATIL    schedule 17.03.2021    source источник
comment
Вы можете создать [вывод] (terraform.io/docs/language/values/ outputs.html) с идентификатором tgw в модуле транзитного шлюза и передать его как переменную в свой ресурс / модуль.   -  person Styszma    schedule 17.03.2021


Ответы (1)


Если две учетные записи управляются одним файлом состояния, вы можете использовать выходы модуля.

Если обе учетные записи созданы отдельно, вы можете использовать модуль данных в terraform для ссылки на ресурс, который не управляется terraform или не управляется другим файлом состояния.

Основные параметры ресурса данных транзитного шлюза задокументированы здесь.

Самый простой способ - добавить значение идентификатора в конфигурацию для сборки вашей учетной записи 2 и ссылаться на него таким образом. Если это невозможно, вы можете добавить понятное имя в тег и использовать фильтр, чтобы найти его в другом месте:

data "aws_ec2_transit_gateway" "tgw" {
  filter {
    name   = "tag:Name"
    values = ["my-transit-gw"]
  }
}
person Dan Monego    schedule 17.03.2021