Terraform无法创建AW​​S私有托管路由53区域

时间:2017-03-05 10:51:10

标签: amazon-web-services amazon-route53 amazon-vpc terraform

当我尝试创建与现有VPC关联的新托管私有区域时,Terraform似乎无法创建AW​​S私有托管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"
}

我不确定错误是指其中任何一个:

  • VPC需要事先获得授权与区域联系。
  • 运行terraform的aws帐户需要正确的IAM权限才能将区域与vpc相关联

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

3 个答案:

答案 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中列出的所有权限:

enter image description here