提供者.tf

提供者.tf

我在控制所有 route53 区域的主账户下拥有用于开发、QA 和生产的 AWS 子账户。我使用 Terraform 管理一切。我使用主账户中的 STSAssumeRole 跨账户角色来访问子账户。我使用 .aws/config 文件中的角色 arn,并告诉 aws 提供商使用我想要使用的账户的配置文件。

目前,我正在尝试弄清楚如何允许 terraform 在使用一个子账户(假定 sts 角色)的配置文件运行时在该父账户中创建或修改 route53 区域。

当我尝试应用我的 route53 资源时出现以下错误:“aws_route53_record.default:AccessDenied:用户:arn:aws:sts::ID-OF-SUB-ACCOUNT:assumed-role/Cross-Production/COMPANYNAME-prod-01-awsume-session 未获授权访问此资源状态代码:403,请求 ID:BLAHBLAHBLAH”

当我不想在命令行上指定 --profile 时,我使用 awsume 动态交换我的配置文件环境。

我需要想办法告诉 terraform 承担另一个角色,或者停止承担其当前角色(这会将其放回主帐户的管理员用户)。但不太确定如何去做。有什么建议吗?

答案1

Terraform 支持多个提供商

提供者.tf

# default provider
provider "aws" {
  access_key = "foo"
  secret_key = "bar"
  region     = "us-east-1"
}

provider "aws" {
     alias  = "aws-assume"
     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.aws-assume"

  # ...
}

相关内容