簡體   English   中英

使用 IAM 角色而不是憑證從使用 terraform 的 EC2 實例創建 aws 資源

[英]Use IAM role instead of credentials to create aws resource from an EC2 instance using terraform

我們正在滿足一項要求,我們希望在 AWS EC2 實例上運行的 terraform apply 使用 IAM 角色而不是使用憑證(訪問密鑰/秘密密鑰)作為 aws 提供程序的一部分在 AWS 中創建 route53。 注意:添加到實例的 IAM 角色已提供策略,該策略為角色提供 route53fullaccess。 當我們在 terraform.tf 中使用以下語法時,它工作正常。 我們能夠創建路線。 句法:

*provider "aws" {
access_key = "${var.aws_accesskey}
secret_key = "${var.aws_secretkey}
region = "us-east-1"
}
resource "aws_route53_record {}*

但是,我們希望 terraform 腳本使用 IAM 角色而不是憑據運行。 (不想維護憑證文件) 嘗試的步驟: 1. 從 terraform.tf 文件中刪除提供程序塊並運行構建。 語法:資源“aws_route53_record {} 2. 出現以下錯誤。Provider.aws :InvalidClientTokenid。3. 瀏覽了 terraform 官方文檔以使用 IAM 角色。它說要使用元數據 api。但沒有工作示例。( https: //www.terraform.io/docs/providers/aws/index.html ) 我是 Terraforms 的新手,所以如果這是一個基本問題,請原諒我。有人可以幫助代碼/工作示例來實現這一目標嗎?

看看這里, https://www.terraform.io/docs/providers/aws/#ec2-role它解釋了這在AWS上是如何工作的。

在提供者的terraform腳本中為IAM角色插入以下行:

role_arn = "arn:aws:iam::<your account>:role/SQS-Role-demo"

您需要在“提供程序”塊中提供配置文件arn,而不是角色,如下所示:

provider "aws" { profile = "arn:aws:iam::<your account>:instance-profile/<your role name>" }

上面答案中提到的'role_arn'鍵在'provider'上下文中實際上是無效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM