尝试在Terraform中尝试auto_accept vpc对等时,为什么会出现权限错误?

时间:2016-11-06 14:09:30

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

我正在尝试在帐户之间创建一个VPC对等项并自动接受它,但它失败并出现权限错误。

以下是 main.tf

中的提供商
provider "aws" {
  region                   = "${var.region}"
  shared_credentials_file  = "/Users/<username>/.aws/credentials"
  profile                  = "sandbox"
}

data "aws_caller_identity" "current" { }

以下是 vpc_peer 模块:

resource "aws_vpc_peering_connection" "peer" {
      peer_owner_id              = "${var.peer_owner_id}"
      peer_vpc_id                = "${var.peer_vpc_id}"
      vpc_id                     = "${var.vpc_id}"
      auto_accept                = "${var.auto_accept}"

      accepter {
        allow_remote_vpc_dns_resolution = true
      }

      requester {
        allow_remote_vpc_dns_resolution = true
      }

      tags {
        Name = "VPC Peering between ${var.peer_vpc_id} and ${var.vpc_id}"
      }
}

这是maint.ft中的模块执行

module "peering" {
  source = "../modules/vpc_peer"

  region        = "${var.region}"
  peer_owner_id = "<management account number>"
  peer_vpc_id   = "<vpc-********>"
  vpc_id        = "${module.network.vpc_id}"
  auto_accept   = "true"
}

现在我正在使用的&#34;沙箱&#34;提供商拥有管理帐户中VPC中VPC对等的权限。

我使用了AWS的以下程序:http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

不幸的是,我一直没有遇到以下错误:

1 error(s) occurred:

* aws_vpc_peering_connection.peer: Unable to accept VPC Peering Connection: OperationNotPermitted: User 651267440910 cannot accept peering pcx-f9c55290
    status code: 400, request id: cfbe1163-241e-413b-a8de-d2bca19726e5

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我设法运行一个接受对等方的local_exec。

以下是一个例子:

resource "aws_vpc_peering_connection" "peer" {

  peer_owner_id              = "${var.peer_owner_id}"
  peer_vpc_id                = "${var.peer_vpc_id}"
  vpc_id                     = "${var.vpc_id}"

  provisioner "local-exec" {
    command = "aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id=${aws_vpc_peering_connection.peer.id} --region=${var.region} --profile=${var.profile}"

  }

  tags {
    Name = "VPC Peering between ${var.peer_vpc_id} and ${var.vpc_id}"
  }
}

答案 1 :(得分:0)

Terraform中的auto_accept参数只能用于同一帐户中的VPC。来自documentation

  

auto_accept - (可选)接受对等(两个VPC都需要进入   相同的AWS账户)。

...

  

如果两个VPC不在同一个AWS账户中,请不要启用   auto_accept属性。您仍然必须接受VPC对等   使用AWS管理控制台手动连接请求,AWS CLI,   通过SDK等

因此,您只需要在没有auto_accept的情况下在此方面进行对等连接,然后在目标帐户中手动或以编程方式接受它。一些编程选项:

您选择的语言的AWS SDK也应该有一个匹配的方法。

答案 2 :(得分:0)

VPC对等将发生在具有相同帐户或不同accout的相同区域,在两侧都需要接受VPC对等,以便从一个vpc访问另一个vpc。