6

我们正在研究一个要求,我们希望在 AWS EC2 实例上运行的 terraform apply 使用 IAM 角色,而不是使用凭证(accesskey/secretkey)作为 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 的新手,所以如果这是一个基本问题,请原谅我。有人可以通过代码/工作示例来帮助实现这一目标吗?

4

2 回答 2

2

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

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

上面答案中提到的 'role_arn' 键实际上在 'provider' 上下文中是无效的。

于 2019-05-13T13:57:41.133 回答
0

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

role_arn = "arn:aws:iam::<your account>:role/SQS-Role-demo"
于 2018-11-30T10:02:48.180 回答