在同一计划中将Terraform应用于两个不同的AWS账户

时间:2019-07-02 14:42:16

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

我们当前正在将某些CloudFormation模板移植到Terraform。在这些模板之一中,我们使用具有Lambda函数的自定义资源。

该功能的目的是在我们的主要AWS账户中扮演角色;在其中管理R53 DNS的位置,并在那里添加新生成的CloudFront dns。

我想知道是否有一种方法可以在terraform中做到这一点,例如:

  1. 在dev / qa / prod帐户上创建cloudfront资源,alb等
  2. 将r53记录集添加到主帐户中

全部在同一地形计划中。创建资源时可以选择IAM角色吗?还是选择应该在其中创建资源的帐户?

我找到的唯一参考是here

1 个答案:

答案 0 :(得分:3)

您可以配置multiple providers(在您的情况下,每个帐户一个)并为每个帐户创建一个别名。然后,您将需要为每个资源指定提供程序。示例:

provider "aws" {
  region  = "eu-west-1"
  profile = "profile1"
  alias   = "account1"
}

provider "aws" {
  region  = "eu-west-1"
  profile = "profile2"
  alias   = "account2"
}

resource "aws_lambda_function" "function1" {
  provider = "aws.account1" // will be created in account 1
  ...
}
resource "aws_lambda_function" "function2" {
  provider = "aws.account2" // will be created in account 2
  ...
}