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"
}
我不确定错误是否指的是其中之一:
- VPC不知何故需要提前授权关联Zone
- aws 账户 运行 terraform 需要正确的 IAM 权限才能将区域与 vpc 相关联
有人知道我该如何进一步解决这个问题吗?
检查 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 脚本在多个区域进行部署时,以上代码段很有用。
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"
}
我不确定错误是否指的是其中之一:
- VPC不知何故需要提前授权关联Zone
- aws 账户 运行 terraform 需要正确的 IAM 权限才能将区域与 vpc 相关联
有人知道我该如何进一步解决这个问题吗?
检查 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 脚本在多个区域进行部署时,以上代码段很有用。