我们当前正在将某些CloudFormation模板移植到Terraform。在这些模板之一中,我们使用具有Lambda函数的自定义资源。
该功能的目的是在我们的主要AWS账户中扮演角色;在其中管理R53 DNS的位置,并在那里添加新生成的CloudFront dns。
我想知道是否有一种方法可以在terraform中做到这一点,例如:
全部在同一地形计划中。创建资源时可以选择IAM角色吗?还是选择应该在其中创建资源的帐户?
我找到的唯一参考是here
答案 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
...
}