Terraform 如何将一种资源的输出值作为输入分配给另一种资源?
我的根模块中有两个Terraform 如何将一种资源的输出值作为输入分配给另一种资源?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我的根模块中有两个.tf文件: 第一个称为api网关.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
.tf
文件:
第一个称为api网关.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_端点
和id
传递到route53,但我不知道如何传递
我尝试使用输出返回这两个值,并在route53资源中引用它,但是它不起作用。它给我一个未声明的资源错误
如何将一个资源的输出值作为输入分配给另一个资源?假设同时处理两个TF文件,则需要使用输出变量,这只是一个参考
zone\u id=“${aws\u apigatewayv2\u api.apiGateway.regional\u zone\u id}”
例如,我的api网关块(在我的api_gateway.tf中)是
而我的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}"
}
}
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}"
}
}