使用IAM角色而不是凭据使用terraform从EC2实例创建aws资源

时间:2018-02-05 10:47:11

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

我们正在制定一项要求,我们希望在AWS EC2实例上运行的terraform应用程序使用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 Role运行,而不是使用凭据运行。 (不想维护凭证文件) 尝试的步骤: 1.从terraform.tf文件中删除提供程序块并运行构建。 句法: 资源" aws_route53_record {} 2.获取以下错误。 Provider.aws:InvalidClientTokenid。 3.通过terraform官方文档使用IAM Role。它说使用元数据api。但是没有工作样本。 (https://www.terraform.io/docs/providers/aws/index.html) 对于Terraforms来说,如果它是一个基本问题,请原谅我。有人可以帮助代码/工作样本来实现这个目标吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

在您的Terraform脚本中的提供程序中插入以下IAM角色行:

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

答案 2 :(得分:0)

您需要在“ provider”块中提供概要文件arn,而不是在角色中提供

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

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

相关问题