amazon-web-services - 如何解决找不到匹配的 Route53Zone?
问题描述
我正在为 terraform > 0.12 版本的 terraform AWS 认证管理器创建一个模块。我注意到当var.domain_name=["x.public.com","y.private.dev"]
同时具有公共和私有域时,我收到一个错误no matching Route53Zone found
。
我确实手动运行aws route53 list-hosted-zones-by-name
,我能够获得公共和私有区域 id,它也可以工作var.domain_name=["x.public.com"] or var.domain_name=["y.private.dev"]
,即只有全部公共或全部私有。
我不确定是什么问题?我尝试删除private_zone
,也尝试使用private_zone = trimprefix(each.value,".") == "dev" ? "true" : "false"
,在这两种情况下都得到了同样的错误。
有人可以指出我错在哪里。谢谢!
代码:
resource "aws_acm_certificate" "certificate" {
for_each = toset(var.domain_name)
domain_name = each.value
subject_alternative_names = ["*.${each.value}"]
validation_method = "DNS"
tags = {
Name = each.value
owner = "foo"
}
lifecycle {
create_before_destroy = true
}
}
data "aws_route53_zone" "selected" {
for_each = toset(var.domain_name)
name = each.value
private_zone = false
}
resource "aws_route53_record" "record" {
for_each = toset(var.domain_name)
zone_id = data.aws_route53_zone[each.key].selected.zone_id
name = aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_name
type = aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_type
ttl = "300"
records = [aws_acm_certificate.certificate[each.key].domain_validation_options.0.resource_record_value]
}
Error: no matching Route53Zone found
on ../tf_module_acm/main.tf line 1, in data "aws_route53_zone" "selected":
34: data "aws_route53_zone" "selected" {
Error: no matching Route53Zone found
on ../tf_module_acm/main.tf line 1, in data "aws_route53_zone" "selected":
34: data "aws_route53_zone" "selected" {
解决方案
推荐阅读
- c++ - 为什么不能删除正确的节点?
- javascript - 当使用 Vuejs 更改对象中的任何数据时,如何运行函数?
- java - 用空字符串装饰器替换 null
- javascript - 不推荐使用 event.target 吗?
- regex - 正则表达式之间的等价
- azure - Azure 策略要求创建某个标记,但不使用默认值?
- unity3d - 如何根据方向将相机定位在玩家后面并在Unity中查看该方向
- cordova - ionic cordova平台添加android源码路径不存在:resources/android/icon/drawable-hdpi-icon.png
- node.js - 如何使用护照节点设置管理员密码
- regex - 给定两个正则表达式,确定一个是否是另一个的补充