未找到 Terraform AWS 凭证文件
Terraform AWS credentials file not found
在阅读 Terraform 上的文档时,它说有 3 个选项可用于查找 AWS 凭证:
- 静态凭据(嵌入在源文件中)
- 环境变量。
- 来自 AWS 凭证文件
我正在尝试让我的设置只使用凭据文件。我检查了环境变量是否已清除,并将 Terraform 中的相关变量留空。
当我这样做时 运行 'Terraform Plan' 我收到错误:
No Valid credential sources found for AWS Provider.
我什至尝试将我的凭据文件的位置添加到我的提供商块中,但这也没有帮助:
provider "aws" {
region = "${var.region}"
profile = "${var.profile}"
shared_credentials_file = "/Users/david/.aws/credentials"
profile = "testing"
}
我是否缺少让 Terraform 读取此文件而不需要环境变量的东西?
我用 Terraform v0.6.15
测试过,它工作正常。
问题一定出在 profile
。检查以下内容。
1. 从您的供应商处删除 2 profile
个标签。
provider "aws" {
region = "${var.region}"
shared_credentials_file = "/Users/david/.aws/credentials"
profile = "testing"
}
2。确保您的凭据文件 /Users/david/.aws/credentials
采用以下格式,其中 testing
是您在 provider "aws"
中指定的 profile
[testing]
aws_access_key_id = *****
aws_secret_access_key = *****
要让多个配置文件与 Terraform 一起使用,请确保您提供
aws_access_key_id
加入您的个人资料声明。每个配置文件应如下所示:
[profile_name]
aws_access_key=*****
aws_secret_access_key****
aws_access_key_id=*****
从技术上讲,您甚至不需要 aws_access_key,因为 id 版本似乎是底层 aws cli 所需要的。也许是我,但在我阅读的文件中,这一点从来都不清楚。
我刚刚在使用 terraform aws provider (2.12.0) 时遇到了同样的问题,我就是这样解决的。
在我的案例中,提供商无法处理我在 $HOME/.aws/credentials
中的默认配置文件没有我的访问密钥和秘密,而是其中有一个 "source_profile"。 terraform aws 提供程序似乎无法处理此问题(但这适用于 Java SDK 和 AWS CLI,因为我已经进行了一段时间的设置)。
这是我没有用的,请注意默认配置文件有 role_arn 和 source_profile:
[default]
role_arn = arn:aws:iam::<ACCT_ID>:role/readonly
source_profile = account
region = us-east-1
[other-profile]
role_arn = arn:aws:iam::<ACCT_ID>:role/other-role
source_profile = account
region = us-east-1
[account]
region = us-east-1
aws_access_key_id=****
aws_secret_access_key=****
我将其更改为以下内容,这导致 aws 提供商为我工作。请注意,我将两个配置文件合并到 "default" 配置文件中:
[other-profile]
role_arn = arn:aws:iam::<ACCT_ID>:role/other-role
source_profile = default
region = us-east-1
[default]
region = us-east-1
aws_access_key_id=****
aws_secret_access_key=****
role_arn = arn:aws:iam::<ACCT_ID>:role/readonly
source_profile = default
这似乎适用于 AWS CLI(默认为只读角色并支持切换到 "other-profile")并允许 terraform 正确读取凭证。
(Terraform v0.14.2,macOS 11.0.1)
我需要做的:
AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... terraform plan
这对我来说很奇怪,因为我的 ~/.aws 是有序的,我的 .tf-s 也是如此。
¯_(ツ)_/¯
如果您只需要快速修复而不需要设置 Terraform,
正如评论中所建议的,只需在您的终端中输入:
export AWS_ACCESS_KEY_ID="xxxxxxxxxxxxx"
export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxx"
export AWS_DEFAULT_REGION="your-region-1"
在阅读 Terraform 上的文档时,它说有 3 个选项可用于查找 AWS 凭证:
- 静态凭据(嵌入在源文件中)
- 环境变量。
- 来自 AWS 凭证文件
我正在尝试让我的设置只使用凭据文件。我检查了环境变量是否已清除,并将 Terraform 中的相关变量留空。
当我这样做时 运行 'Terraform Plan' 我收到错误:
No Valid credential sources found for AWS Provider.
我什至尝试将我的凭据文件的位置添加到我的提供商块中,但这也没有帮助:
provider "aws" {
region = "${var.region}"
profile = "${var.profile}"
shared_credentials_file = "/Users/david/.aws/credentials"
profile = "testing"
}
我是否缺少让 Terraform 读取此文件而不需要环境变量的东西?
我用 Terraform v0.6.15
测试过,它工作正常。
问题一定出在 profile
。检查以下内容。
1. 从您的供应商处删除 2 profile
个标签。
provider "aws" {
region = "${var.region}"
shared_credentials_file = "/Users/david/.aws/credentials"
profile = "testing"
}
2。确保您的凭据文件 /Users/david/.aws/credentials
采用以下格式,其中 testing
是您在 provider "aws"
profile
[testing]
aws_access_key_id = *****
aws_secret_access_key = *****
要让多个配置文件与 Terraform 一起使用,请确保您提供
aws_access_key_id
加入您的个人资料声明。每个配置文件应如下所示:
[profile_name]
aws_access_key=*****
aws_secret_access_key****
aws_access_key_id=*****
从技术上讲,您甚至不需要 aws_access_key,因为 id 版本似乎是底层 aws cli 所需要的。也许是我,但在我阅读的文件中,这一点从来都不清楚。
我刚刚在使用 terraform aws provider (2.12.0) 时遇到了同样的问题,我就是这样解决的。
在我的案例中,提供商无法处理我在 $HOME/.aws/credentials
中的默认配置文件没有我的访问密钥和秘密,而是其中有一个 "source_profile"。 terraform aws 提供程序似乎无法处理此问题(但这适用于 Java SDK 和 AWS CLI,因为我已经进行了一段时间的设置)。
这是我没有用的,请注意默认配置文件有 role_arn 和 source_profile:
[default]
role_arn = arn:aws:iam::<ACCT_ID>:role/readonly
source_profile = account
region = us-east-1
[other-profile]
role_arn = arn:aws:iam::<ACCT_ID>:role/other-role
source_profile = account
region = us-east-1
[account]
region = us-east-1
aws_access_key_id=****
aws_secret_access_key=****
我将其更改为以下内容,这导致 aws 提供商为我工作。请注意,我将两个配置文件合并到 "default" 配置文件中:
[other-profile]
role_arn = arn:aws:iam::<ACCT_ID>:role/other-role
source_profile = default
region = us-east-1
[default]
region = us-east-1
aws_access_key_id=****
aws_secret_access_key=****
role_arn = arn:aws:iam::<ACCT_ID>:role/readonly
source_profile = default
这似乎适用于 AWS CLI(默认为只读角色并支持切换到 "other-profile")并允许 terraform 正确读取凭证。
(Terraform v0.14.2,macOS 11.0.1)
我需要做的:
AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... terraform plan
这对我来说很奇怪,因为我的 ~/.aws 是有序的,我的 .tf-s 也是如此。 ¯_(ツ)_/¯
如果您只需要快速修复而不需要设置 Terraform,
正如评论中所建议的,只需在您的终端中输入:
export AWS_ACCESS_KEY_ID="xxxxxxxxxxxxx"
export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxx"
export AWS_DEFAULT_REGION="your-region-1"