Amazon web services Terraform从帐户A获取AWS数据,并在帐户B中使用

Amazon web services Terraform从帐户A获取AWS数据,并在帐户B中使用,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,我正在使用两组terraform脚本,分别在帐户A和帐户B的AWS中创建应用程序基础设施和代码管道,在帐户B中创建代码管道的TF脚本将需要帐户A中的一些配置参数(ALB、ECS..等),该帐户已设置,我对获取数据很熟悉,如果所有东西都托管在同一个AWS帐户上,是否可以使用Terraform从另一个帐户检索一个帐户的数据?是否有此场景的文档?是的,有可能。由于这个问题相当笼统,我只能提供笼统的信息 通常,对于跨帐户访问,使用跨帐户IAM角色。这是一种良好的做法,而不是要求。关于角色的AWS文档信息

我正在使用两组terraform脚本,分别在帐户A和帐户B的AWS中创建应用程序基础设施和代码管道,在帐户B中创建代码管道的TF脚本将需要帐户A中的一些配置参数(ALB、ECS..等),该帐户已设置,我对获取数据很熟悉,如果所有东西都托管在同一个AWS帐户上,是否可以使用Terraform从另一个帐户检索一个帐户的数据?是否有此场景的文档?

是的,有可能。由于这个问题相当笼统,我只能提供笼统的信息

通常,对于跨帐户访问,使用跨帐户IAM角色。这是一种良好的做法,而不是要求。关于角色的AWS文档信息:

基于这些,在
账户A
中,您必须设置一个可分配角色,该角色具有允许账户B承担该角色的信任关系。在帐户B中,用于terraform的IAM用户需要具有IAM权限才能担任该角色

在terraform中设置角色后,您将使用
aws
提供程序,该提供程序将承担角色,例如:

然后,要使用提供程序,您可以使用其别名作为资源或数据源,例如:

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"
  }
}
resource "aws_instance" "foo" {
  provider = aws.assumed_role_provider

  # ...
}