我们正在研究一个需要在Terraform上应用的需求,该需求在AWS EC2实例上运行以使用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.浏览t​​erraform官方文档以使用IAM角色。它说使用元数据api。但没有有效的样本。 (https://www.terraform.io/docs/providers/aws/index.html
Terraforms的新手,请原谅我这是一个基本问题。有人可以帮助代码/工作示例实现这一目标吗?

最佳答案

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

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

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

关于amazon-web-services - 使用IAM角色而不是凭据来使用Terraform从EC2实例创建AWS资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48620824/

10-16 10:12