我刚刚遇到了与 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 提供程序为我工作。请注意,我将两个配置文件合并到“默认”配置文件中:
[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(默认为只读角色并支持切换到“其他配置文件”)以及允许 terraform 正确读取凭证。