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

Tha*_*Van 5 amazon-web-services kubernetes terraform kubectl amazon-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" {
Run Code Online (Sandbox Code Playgroud)

你能建议吗?欣赏 !

Rtm*_*tmY 12

这里开始

这是一个可能由多种原因引起的一般错误。

一些例子:

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
Run Code Online (Sandbox Code Playgroud)


2) 当您aws_secret_access_key包含诸如加号+或多个正斜杠之类的字符时/。在此处查看更多信息
解决方案:删除凭据并生成新凭据。


3) 当您尝试在必须显式启用(并且没有)的区域内执行 Terraform 时。
(就我而言,它是me-south-1 (Bahrain)- 在此处查看更多信息)。
解决方案:启用区域或移动到启用的区域。


4) 如果您使用Vault等3rd 方工具并且不提供有效的 AWS 凭证进行通信 - 请在此处查看更多信息


所有这些都会导致 aws sts:GetCallerIdentityAPI失败。

  • 对于我的问题...解决方案 2 是问题所在。既然 + 这么麻烦,为什么要产生 + 符号呢?! (3认同)
  • 2)几乎总是有+或/ (2认同)

And*_*löw 5

就我而言,事实证明我有环境变量AWS_ACCESS_KEY_IDAWS_DEFAULT_REGIONAWS_SECRET_ACCESS_KEY设置了。这绕过了我的~/.aws/credentials文件。只需取消设置这些环境变量就对我有用!


use*_*510 5

添加 S3 Terraform 后端后,我遇到了相同的无效令牌错误。

profile这是因为我在新后端上缺少一个属性。

这是我收到无效令牌错误时的设置:

# ~/.aws/credentials

[default]
aws_access_key_id=OJA6...
aws_secret_access_key=r2a7...

[my_profile_name]
aws_access_key_id=RX9T...
aws_secret_access_key=oaQy...
Run Code Online (Sandbox Code Playgroud)
# ~/.aws/credentials

[default]
aws_access_key_id=OJA6...
aws_secret_access_key=r2a7...

[my_profile_name]
aws_access_key_id=RX9T...
aws_secret_access_key=oaQy...
Run Code Online (Sandbox Code Playgroud)

这是有效的修复(显示差异,我在开头添加了带有“+”的行):

// main.tf

terraform {
  backend "s3" {
    bucket         = "terraform-state"
    encrypt        = true
    key            = "terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-state-locks"
  }
}
Run Code Online (Sandbox Code Playgroud)

我阅读或观看的指南或视频均不包含该profile属性。但它在 Terraform 文档中进行了解释:

https://www.terraform.io/language/settings/backends/s3