【问题标题】:Use IAM role instead of credentials to create aws resource from an EC2 instance using terraform使用 IAM 角色而不是凭证从使用 terraform 的 EC2 实例创建 aws 资源
【发布时间】:2018-07-15 04:56:50
【问题描述】:

我们正在研究一个要求,我们希望在 AWS EC2 实例上运行的 terraform 应用程序使用 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 Role。它说使用元数据api。但没有工作样本。 (https://www.terraform.io/docs/providers/aws/index.html) 我是 Terraforms 的新手,如果这是一个基本问题,请原谅我。有人可以通过代码/工作示例来帮助实现这一目标吗?

【问题讨论】:

  • 如果只用key去掉那两行呢?
  • 正如@DusanBajic 所说,从您的提供者声明中删除 2 个密钥(access_key 和 secret_key)。如果 IAM 角色附加到实例,则 terraform 将使用凭证(从角色获得)来创建资源。
  • 还没有尝试该选项。会尝试。谢谢。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 2019-09-20
      • 2021-05-28
      • 1970-01-01
      • 2018-11-10
      • 2016-12-07
      • 2016-11-21
      • 2018-02-07
      • 2019-12-17
      相关资源
      最近更新 更多