Terraform-未找到匹配的Route53Zone



我正试图通过Terraform部署NextJS应用程序,但我似乎无法让Route53 Zone正常工作。我已经通过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静态站点模块的问题。在模块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静态站点代码,并从aws静态网站创建一个本地模块,并通过将main.tf:第23行的数字2更改为数字3来修改代码,使其仅适用于三级域

zone_domain_names = {
for d in local.all_domains: d => join(".", slice(split(".", d), length(split(".", d)) - 3, length(split(".", d))))
}

注:。然后,此本地模块将仅适用于三级域,而不适用于二级域。

相关内容

  • 没有找到相关文章

最新更新