Как вы назначаете выходное значение одного ресурса в качестве входного для другого?

У меня есть два файла .tf в моем корневом модуле:

первый называется api-gateway.tf, который предоставляет шлюз API в AWS:

resource "aws_apigatewayv2_api" "apiGateway" {
  name          = "some_Name"
  protocol_type = "HTTP"
}

output "api_gateway_endpoint" {
value = "${aws_apigatewayv2_api.apiGateway.api_endpoint}"
}
output "api_gateway_endpoint_id" {
value = "${aws_apigatewayv2_api.apiGateway.id}"
}

У меня есть еще один файл .tf с именем route53.tf, который создает запись Route53:

resource "aws_route53_record" "www" {
  zone_id = "xxxxx"
  name    = "someurl.com"
  type    = "A"
  alias {
    name                   = "${output.api_gateway_endpoint}"
    zone_id                = "${output.api_gateway_endpoint_id}"
    evaluate_target_health = false
  }
}

Мне нужно передать api_endpoint и id APIGateway на route53, но я не знаю как?

Я попытался вернуть эти два значения, используя output и ссылаясь на них внутри ресурса route53, однако это не работает. Это дает мне undeclared resource error.

Как вы назначаете выходное значение одного ресурса в качестве входного для другого?


person Benjamin    schedule 18.05.2020    source источник


Ответы (1)


Предполагая, что вы обрабатываете оба файла TF вместе, необходимо использовать выходные переменные, это просто ссылка.

zone_id = "${aws_apigatewayv2_api.apiGateway.regional_zone_id}"


Например, мой блок шлюза API (в моем файле api_gateway.tf)

resource "aws_api_gateway_domain_name" "devapi" 
{
  domain_name              = "${var.appLower}.${local.domain}"
  regional_certificate_arn = "${data.aws_acm_certificate.mts.arn}"

  endpoint_configuration {
    types = ["REGIONAL"]
  }
}

тогда как мой блок route53 (в моем route53.tf) выглядит так

resource "aws_route53_record" "devapi" 
 {
  name    = "${aws_api_gateway_domain_name.devapi.domain_name}"
  type    = "A"
  zone_id = "${data.aws_route53_zone.mts.id}"

  alias {
    evaluate_target_health = true
    name                   = "${aws_api_gateway_domain_name.devapi.regional_domain_name}"
    zone_id                = "${aws_api_gateway_domain_name.devapi.regional_zone_id}"
  }
}
person DBtake3    schedule 18.05.2020