我一直在 terraform 中使用访问/私有密钥来创建/管理我们在 AWS 中的基础设施。但是,我正在尝试改用 IAM 角色。我应该能够在我的帐户中使用角色并在另一个帐户中担任该角色,并且应该能够运行计划,应用程序等以在另一个帐户中构建基础结构。任何想法,请提出建议。
到目前为止,我正在使用 https://www.terraform.io/docs/providers/aws/进行测试,但由于某种原因,它对我不起作用,或者我不清楚说明。
获取要代入的角色的完整 ARN。在您的提供商配置中,将"assume_role"块与 ARN: 一起使用 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"
}
}
我们使用非地形脚本来设置 IAM 角色和代入角色的凭证。像 https://github.com/Integralist/Shell-Scripts/blob/master/aws-cli-assumerole.sh ( 为了与 okta 一起使用,我们使用 https://github.com/redventures/oktad
我们获取 tmp credentaials 和令牌,将其保存在 ~/.aws/credentials 中作为各自的 dev/prod 等配置文件,然后像这样指向我们各自的 terraform 提供程序配置:
provider "aws" {
region = "${var.region}"
shared_credentials_file = "${pathexpand("~/.aws/credentials")}"
profile = "${var.dev_profile}"
}