我正在使用terraform和kubectl来部署基础结构和应用程序。
自从我更改了aws configure:
terraform init
terraform apply
我总是得到:
terraform apply
Error: error validating provider credentials: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid.
status code: 403, request id: 5ba38c31-d39a-11e9-a642-21e0b5cf5c0e
on providers.tf line 1, in provider "aws":
1: provider "aws" {
你能建议吗?欣赏!
答案 0 :(得分:0)
来自here。
这是一个一般性错误,可能由几种原因引起。
一些例子:
1)无效凭据作为环境变量或在~/.aws/credentials
中传递。
解决方案:删除旧的配置文件/凭据并清除您所有的环境变量:
for var in AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SECURITY_TOKEN ; do eval unset $var ; done
2)当您的aws_secret_access_key
包含加号+
或多个正斜杠/
之类的字符时。在here中查看更多信息。
解决方案:删除凭据并生成新的凭据。
3)当您尝试在必须显式启用(而非启用)的区域内执行Terraform时。
(在我的情况下是me-south-1 (Bahrain)
-在here中有更多信息)。
解决方案:启用区域或移至已启用的区域。
4)如果您使用的是Vault之类的第三方工具,并且没有提供有效的AWS凭证进行通信-请在here中查看更多信息。
所有都会导致aws sts:GetCallerIdentity
API失败。
答案 1 :(得分:0)
就我而言,结果证明我设置了环境变量 AWS_ACCESS_KEY_ID
、AWS_DEFAULT_REGION
和 AWS_SECRET_ACCESS_KEY
。这绕过了我的 ~/.aws/credentials
文件。只需取消设置这些环境变量对我有用!