InvalidClientTokenId:请求中包含的安全令牌无效。状态码:403

时间:2019-09-10 07:17:40

标签: amazon-web-services kubernetes kubectl aws-eks

我正在使用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" {

你能建议吗?欣赏!

2 个答案:

答案 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_IDAWS_DEFAULT_REGIONAWS_SECRET_ACCESS_KEY。这绕过了我的 ~/.aws/credentials 文件。只需取消设置这些环境变量对我有用!