terraform - Terraform - 找不到匹配的 Route53Zone
问题描述
我正在尝试通过 Terraform 部署 NextJS 应用程序,但我似乎无法让 Route53 区域工作。我已经通过 Route53 注册了域,并使用该域设置了一个托管区域。使用 CLI 命令时,aws route53 list-hosted-zones
我可以成功地看到那里的托管区域。但是,每当尝试运行时,terraform plan
我都会遇到此问题:
Error: no matching Route53Zone found
on .terraform/modules/aws_static_site/main.tf line 1, in data "aws_route53_zone" "zone":
1: data "aws_route53_zone" "zone" {
这是我的 tf 文件:
provider "aws" {
region = "eu-west-1"
profile = "rozzle-static-site"
}
module "aws_static_site" {
source = "dvargas92495/static-site/aws"
version = "1.2.0"
domain = "rozzle.co.uk"
secret = "REMOVED"
tags = {
Application = "rozzle-static-site"
}
}
provider "github" {
owner = "dvargas92495"
}
resource "github_actions_secret" "deploy_aws_access_key" {
repository = "static-site-demo"
secret_name = "DEPLOY_AWS_ACCESS_KEY_ID"
plaintext_value = module.aws_static_site.deploy-id
}
resource "github_actions_secret" "deploy_aws_access_secret" {
repository = "static-site-demo"
secret_name = "DEPLOY_AWS_SECRET_ACCESS_KEY"
plaintext_value = module.aws_static_site.deploy-secret
}
我无法弄清楚这是如何工作的。希望有人能帮忙!
解决方案
这似乎是 aws-static-site 模块的问题。在模块 main.tf 的第 22 行,它执行以下操作:
zone_domain_names = {
for d in local.all_domains: d => join(".", slice(split(".", d), length(split(".", d)) - 2, length(split(".", d))))
}
在你的情况下,它会产生这个:
local.zone_domain_names = {
"rozzle.co.uk" = "co.uk"
"www.rozzle.co.uk" = "co.uk"
}
它尝试将其用于区域数据块。
data "aws_route53_zone" "zone" {
for_each = toset(values(local.zone_domain_names))
name = "${each.value}."
}
这自然会失败,因为您不控制“co.uk”域。
看来这个模块只处理二级域,而不是三级域。我建议为此模块打开一个错误报告。
此外,作为一个快速而肮脏的修复,您可以下载 aws-static-site 代码并从 aws-static-site 创建一个本地模块,并通过将数字 2 更改为数字 3 修改代码以仅适用于第三级域在 main.tf 的第 23 行:
zone_domain_names = {
for d in local.all_domains: d => join(".", slice(split(".", d), length(split(".", d)) - 3, length(split(".", d))))
}
注意。然后,此本地模块将仅适用于第三级域,而不适用于第二级域。
推荐阅读
- bash - 如何在启用“pipefail”的脚本中使用“head”?
- r - 从R中的向量中删除引号(“)
- objective-c - 记录一个objective-c指针以及它是弱还是强
- python - 如何从 mac 运行 .ipynb 笔记本,可能使用 docker 或 VM?
- animation - 如何通过 swiftUI 制作 2048 游戏
- c++ - OSX clang++:架构 x86_64 的未定义符号,用于 cpp 文件中显式实例化的模板
- angular - 如何验证 Angular 2 中的输入
- elasticsearch - Elasticsearch 问题类型删除
- javascript - 如何在 datepicker 中使用 mm-yy 格式?
- r - violin_plot() 具有用于分组变量的连续轴?