【问题标题】: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_roleaws 提供程序,例如来自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
    
      # ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-10-22
      • 2020-05-22
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多