当我尝试创建与现有VPC关联的新托管私有区域时,Terraform似乎无法创建AWS私有托管Route53区域,并因以下错误而死亡:
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"
}
我不确定错误是指其中任何一个:
有没有人知道如何进一步解决这个问题?
答案 0 :(得分:1)
有时,当在provider config中配置的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脚本在多个区域中进行部署时,上述摘要非常有用。
答案 1 :(得分:0)
检查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"]
}
答案 2 :(得分:0)
您获得的error code是因为您的用户/角色没有必要的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"
}
您还需要检查您的用户/角色是否具有必要的VPC相关权限。为此,您可能需要docs中列出的所有权限: