未找到Terraform AWS凭证文件

Dav*_*llo 6 amazon-web-services terraform

在阅读Terraform上的文档时,它说有3种方法可以找到AWS信用:

  1. 静态凭证(嵌入在源文件中)
  2. 环境变量.
  3. 来自AWS凭证文件

我想让我的设置只使用凭据文件.我已检查环境变量是否已清除,并且我已将Terraform中的相关变量留空.

当我这样做并运行'Terraform Plan'时,我得到错误:

没有为AWS Provider找到有效的凭据源.

我甚至尝试将我的凭证文件的位置添加到我的提供程序块中,这也没有帮助:

provider "aws" {
    region  = "${var.region}"
    profile = "${var.profile}"
    shared_credentials_file = "/Users/david/.aws/credentials"
    profile = "testing"
}
Run Code Online (Sandbox Code Playgroud)

是否有一些东西我想让Terraform读取这个文件并且不需要环境变量?

Bas*_*kar 8

我测试过Terraform v0.6.15,它工作正常。

问题必须与profile. 检查以下内容。

1.profile从您的提供商中删除 2 个标签。

provider "aws" {
  region  = "${var.region}"
  shared_credentials_file = "/Users/david/.aws/credentials"
  profile = "testing"
}
Run Code Online (Sandbox Code Playgroud)

2.确保您的凭证文件/Users/david/.aws/credentials是在下面的格式,其中testingprofile您指定的provider "aws"

[testing]
aws_access_key_id = *****
aws_secret_access_key = *****
Run Code Online (Sandbox Code Playgroud)


Dav*_*llo 2

要让多个配置文件与 Terraform 一起使用,请确保您提供

aws_access_key_id 
Run Code Online (Sandbox Code Playgroud)

加入您的个人资料声明。每个配置文件应如下所示:

[profile_name]
aws_access_key=*****
aws_secret_access_key****
aws_access_key_id=*****
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您甚至不需要 aws_access_key,因为 id 版本似乎是底层 aws cli 需要的。也许是我的问题,但我读到的文件中从来没有明确这一点。