gpt4 book ai didi

terraform - 您如何将一种资源的输出值分配为另一种资源的输入?

转载 作者:行者123 更新时间:2023-12-04 02:35:54 26 4
gpt4 key购买 nike

我的根模块中有两个 .tf 文件:

第一个称为 api-gateway.tf,它在 AWS 中提供了一个 API 网关:

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}"
}

我有另一个名为 route53.tf.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
}
}

我需要将apigateway的api_endpointid传递给route53,但我不知道怎么办?

我已经尝试使用 output 返回这两个值并在 route53 资源中引用它,但是它不起作用。它给我一个未声明的资源错误

如何将一种资源的输出值分配为另一种资源的输入?

最佳答案

假设您同时处理两个 TF 文件,则需要使用输出变量,这只是一个引用。

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


例如,我的 api 网关 block (在我的 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 block (在我的 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}"
}
}

关于terraform - 您如何将一种资源的输出值分配为另一种资源的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61871159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com