使用 terraform 在 route53 上获取 zone_id 的托管域
Fetch zone_id of hosted domain on route53 using terraform
您好,我正在使用 terraform 创建 route53 记录,我已经有一个托管域 (public) 让我们说 example.com
如何获取它的 zone_id 并附加到记录。如何获取现有 route53 托管区域的 zone_id。我写了一个文件,但它创建了另一个托管区域 example.com
而不是获取现有的 example.com
resource "aws_route53_zone" "main" {
name = "example.com"
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "dev.${data.aws_route53_zone.selected.name}"
type = "A"
alias {
name = var.alb_dns
zone_id = var.zone_id
evaluate_target_health = false
}
}
在 terraform 中,数据源可用于在运行时检索信息。 AWS 提供商包括 route53 区域的数据源。以下是其用法示例:
data "aws_route53_zone" "selected" {
name = "test.com."
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "dev.${data.aws_route53_zone.selected.name}"
type = "A"
alias {
name = var.alb_dns
zone_id = var.zone_id
evaluate_target_health = false
}
}
你也需要添加private_zone = false
data "aws_route53_zone" "selected" {
name = "test.com."
private_zone = false
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "dev.${data.aws_route53_zone.selected.name}"
type = "A"
alias {
name = var.alb_dns
zone_id = var.zone_id
evaluate_target_health = false
}
}
重新要求:
- 我已经拥有托管区(区域:AWS 全球)
- 我想要 $(teraform output) 托管区域 ID 以便在配置中进一步使用
解决方案:
- 创建空资源:
resource "aws_route53_zone" "non-prod-zone" {}
- 导入资源
terraform import aws_route53_zone.non-prod-zone YOUR_HOSTED_ZONE_ID
- 用名称争论你的资源
resource "aws_route53_zone" "non-prod-zone" {
name = var.non_prod_hosted_zone
}
- $(terraform refresh) 将输出您的变量
Outputs:
hosted_zone_test_envs_id = YOUR_HOSTED_ZONE_ID
您好,我正在使用 terraform 创建 route53 记录,我已经有一个托管域 (public) 让我们说 example.com
如何获取它的 zone_id 并附加到记录。如何获取现有 route53 托管区域的 zone_id。我写了一个文件,但它创建了另一个托管区域 example.com
而不是获取现有的 example.com
resource "aws_route53_zone" "main" {
name = "example.com"
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "dev.${data.aws_route53_zone.selected.name}"
type = "A"
alias {
name = var.alb_dns
zone_id = var.zone_id
evaluate_target_health = false
}
}
在 terraform 中,数据源可用于在运行时检索信息。 AWS 提供商包括 route53 区域的数据源。以下是其用法示例:
data "aws_route53_zone" "selected" {
name = "test.com."
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "dev.${data.aws_route53_zone.selected.name}"
type = "A"
alias {
name = var.alb_dns
zone_id = var.zone_id
evaluate_target_health = false
}
}
你也需要添加private_zone = false
data "aws_route53_zone" "selected" {
name = "test.com."
private_zone = false
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "dev.${data.aws_route53_zone.selected.name}"
type = "A"
alias {
name = var.alb_dns
zone_id = var.zone_id
evaluate_target_health = false
}
}
重新要求:
- 我已经拥有托管区(区域:AWS 全球)
- 我想要 $(teraform output) 托管区域 ID 以便在配置中进一步使用
解决方案:
- 创建空资源:
resource "aws_route53_zone" "non-prod-zone" {}
- 导入资源
terraform import aws_route53_zone.non-prod-zone YOUR_HOSTED_ZONE_ID
- 用名称争论你的资源
resource "aws_route53_zone" "non-prod-zone" {
name = var.non_prod_hosted_zone
}
- $(terraform refresh) 将输出您的变量
Outputs:
hosted_zone_test_envs_id = YOUR_HOSTED_ZONE_ID