我们正在满足一项要求,我们希望在 AWS EC2 实例上运行的 terraform apply 使用 IAM 角色而不是使用凭证(访问 key / secret key )作为 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 文件中删除 provider 块并运行构建。
句法:
资源“aws_route53_record {}
2.得到以下错误。
Provider.aws :InvalidClientTokenid。
3. 查阅 terraform 官方文档以使用 IAM 角色。它说使用元数据api。但没有工作样本。 ( https://www.terraform.io/docs/providers/aws/index.html )
我是 Terraforms 的新手,如果这是一个基本问题,请原谅我。有人可以帮助代码/工作示例来实现这一目标吗?
最佳答案
您需要在“提供者”块中提供配置文件 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/