【问题标题】:Terraform to get AWS data from Account A and use it in Account BTerraform 从账户 A 获取 AWS 数据并在账户 B 中使用
【发布时间】:2020-12-08 04:17:40
【问题描述】:
我正在使用两组 terraform 脚本,它们在账户 A 上的 AWS 中创建应用程序基础设施,在账户 B 中创建代码管道,在账户 B 中创建代码管道的 TF 脚本将需要来自账户的一些配置参数(ALB、ECS..etc)一个已经设置好的,如果所有内容都托管在同一个 AWS 账户上,我熟悉获取数据,是否可以使用 Terraform 从另一个账户检索一个账户的数据?是否有适用于这种情况的文档?
【问题讨论】:
标签:
amazon-web-services
terraform
terraform-provider-aws
【解决方案1】:
是的,这是可能的。由于这个问题比较笼统,我只能提供笼统的信息。
一般来说,对于跨账户访问,使用跨账户 IAM 角色。这是一个很好的做法,而不是要求。有关角色的 AWS 文档信息:
基于这些,在Account A 中,您必须设置一个可担任的角色,并具有允许帐户 B 担任该角色的信任关系。在账户 B 中,用于 terraform 的 IAM 用户需要具有 IAM 权限才能代入该角色。
设置好角色后,在 terraform 中,您将使用 assume_role 的 aws 提供程序,例如来自docs:
provider "aws" {
alias = "assumed_role_provider"
assume_role {
role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
session_name = "SESSION_NAME"
external_id = "EXTERNAL_ID"
}
}
然后要使用提供者,您可以将其别名用于资源或数据源,例如来自docs:
resource "aws_instance" "foo" {
provider = aws.assumed_role_provider
# ...
}