Terraform从账户A获取AWS数据并在账户B中使用

问题描述

我正在使用两组terraform脚本,它们在AWS上在账户A上创建应用程序基础架构,在账户B中创建代码管道,在账户B中创建代码管道的TF脚本将需要账户中的一些配置参数(ALB,ECS..etc)一个已经设置好的,如果所有内容都托管在同一个AWS账户上,我就熟悉如何获取数据,是否可以使用Terraform从另一个账户检索一个账户的数据?是否有针对这种情况的文档?

解决方法

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

通常,对于跨帐户访问,使用跨帐户IAM角色。这是一个好习惯,不是必需的。有关角色的AWS文档信息:

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

具有角色设置后,您将在Terraform中使用{strong> 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

  # ...
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...