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