Terraform 无法创建 AWS 私有托管 route53 区域

Terraform cannot create AWS private hosted route53 zone

Terraform 似乎无法创建 AWS 私有托管 Route53 区域,并且当我尝试创建与现有 VPC 相关联的新托管私有区域时出现以下错误并终止:

Error applying plan:
   1 error(s) occurred:
   aws_route53_zone.analytics: InvalidVPCId: The VPC: vpc-xxxxxxx you    provided is not authorized to make the association.
   status code: 400, request id: b411af23-0187-11e7-82e3-df8a3528194f

这是我的 .tf 文件:

provider "aws" {
  region  = "${var.region}"
  profile = "${var.environment}"
}

variable "vpcid" {
  default = "vpc-xxxxxx"
}

variable "region" {
  default = "eu-west-1"
}

variable "environment" {
  default = "dev"
}

resource "aws_route53_zone" "analytics" {
  vpc_id = "${var.vpcid}"
  name   = "data.int.example.com"
}

我不确定错误是否指的是其中之一:

有人知道我该如何进一步解决这个问题吗?

检查 terraform 版本 运行 是否为最新版本。

其次,如果与 sample

相比,您的代码是错误的
data "aws_route53_zone" "selected" {
  name = "test.com."
  private_zone = true
}

resource "aws_route53_record" "www" {
  zone_id = "${data.aws_route53_zone.selected.zone_id}"
  name = "www.${data.aws_route53_zone.selected.name}"
  type = "A"
  ttl = "300"
  records = ["10.0.0.1"]
}

您得到的 error code 是因为您的 user/role 没有必要的 VPC 相关权限,或者您使用了错误的 VPC id。

我建议您仔细检查您正在使用的 VPC id,可能使用 VPC data source 来获取它:

# Assuming you use the "Name" tag on the VPC resource to identify your VPCs
variable "vpc_name" {}

data "aws_vpc" "selected" {
  tags {
    Name = "${var.vpc_name}"
  }
}

resource "aws_route53_zone" "analytics" {
  vpc_id = "${data.aws_vpc.selected.id}"
  name   = "data.int.example.com"
}

您还需要检查您的 user/role 是否具有必要的 VPC 相关权限。为此,您可能需要 docs:

中列出的所有权限

有时,当提供商配置中配置的 aws 区域与您部署 VPC 的区域不同时,您也会遇到此类问题。对于这种情况,我们可以使用 aws 提供商的别名。如下所示:

provider "aws" {
  region = "us-east-1"
}


provider "aws" {
  region = "ap-southeast-1"
  alias = "singapore"
}

然后我们可以在 terraform 资源中使用它,如下所示:

resource "aws_route53_zone_association" "vpc_two" {
  provider = "aws.singapore"
  zone_id = "${aws_route53_zone.dlos_vpc.zone_id}"
  vpc_id  = "${aws_vpc.vpc_two.id}"
}

当您需要 terraform 脚本在多个区域进行部署时,以上代码段很有用。