使用IAM角色的Terraform假设

时间:2017-08-08 04:02:19

标签: amazon-web-services amazon-iam terraform

我一直在使用带有terraform的访问/密钥来在AWS中创建/管理我们的基础架构。但是,我试图转而使用IAM角色。我应该能够在我的帐户中使用一个角色并在另一个帐户中担任该角色,并且应该能够运行计划,应用等以在另一个帐户中构建infra。任何想法,请建议。

到目前为止,我正在使用https://www.terraform.io/docs/providers/aws/进行测试,但出于某种原因,它不适用于我,或者我的说明并不清楚。

2 个答案:

答案 0 :(得分:0)

我们使用非terraform脚本使用IAM角色设置我们的凭据并承担角色。(类似于https://github.com/Integralist/Shell-Scripts/blob/master/aws-cli-assumerole.sh)为了与okta一起使用,我们使用https://github.com/redventures/oktad

我们获取tmp凭证和令牌,将其作为相应的dev / prod等配置文件保存在〜/ .aws / credentials中,然后指向我们各自的terraform提供程序配置,如下所示:

provider "aws" {
  region                  = "${var.region}"
  shared_credentials_file = "${pathexpand("~/.aws/credentials")}"
  profile                 = "${var.dev_profile}"
}

答案 1 :(得分:0)

获取您要承担的角色的完整ARN。在您的提供者配置中,使用带有ARN的'assume_role'块:https://www.terraform.io/docs/providers/aws/index.html#assume_role

provider "aws"
  region = "<whatever region>"
  assume_role {
    role_arn     = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
  }
}