2017-08-08 105 views
1

我一直使用具有terraform的访问/密钥来创建/管理AWS中的基础架构。但是,我试图切换到使用IAM角色。我应该能够在我的帐户中使用角色,并承担另一个帐户中的角色,并且应该能够运行计划,应用等来在其他帐户中构建基础。任何想法,请建议。使用IAM角色的Terraform假定

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

+0

您是否尝试使用assume_role?如果您收到任何错误,请分享。 –

+0

我确实使用了假定的角色。我是否仍然需要为承担角色的用户使用访问密钥/密钥? – Bond

回答

0

我们使用非terraform脚本来建立我们的凭据使用IAM角色和承担的角色。(像https://github.com/Integralist/Shell-Scripts/blob/master/aws-cli-assumerole.sh)对于1563使用,我们用https://github.com/redventures/oktad

我们得到的TMP credentaials和令牌,将它保存〜/ .aws /凭证作为各自开发/生产等配置文件,然后指向我们各自terraform提供商的配置是这样的:

provider "aws" { 
    region     = "${var.region}" 
    shared_credentials_file = "${pathexpand("~/.aws/credentials")}" 
    profile     = "${var.dev_profile}" 
} 
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" 
    } 
} 
+0

谢谢@jpancoast。在阅读了更多关于他们的文档后,我发现了这一点,并发挥了作用。感谢这篇文章。 – Bond