kubernetes 无效的客户端令牌ID:请求中包含的安全令牌无效,状态代码:403

hof1towb  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(5)|浏览(293)

我正在使用,terraform & kubectl来部署infra结构和应用程序。
因为我更改了aws配置:
terraform apply
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" {

你能给点建议吗?谢谢!

wlsrxk51

wlsrxk511#

从这里。
这是一个常见错误,可能由几个原因引起。
以下是一些例子:
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时。
(In我的案例是me-south-1 (Bahrain)-在这里看到更多)。

  • 解决方案:启用区域或移至已启用的区域。*

4)如果您使用Vault等第三方工具,但未提供有效的AWS凭据进行通信,请参阅此处的更多信息。

所有这些都将导致aws sts:GetCallerIdentity API失败。

5ktev3wc

5ktev3wc2#

在添加S3 Terraform后端后,我得到了同样的无效令牌错误。
这是因为我在新的后端上缺少了一个profile属性。
这是我在收到无效令牌错误时的设置:
第一个
这是一个有效的修复程序(显示一个差异,我在开头添加了一行“+”):

// main.tf

  terraform {
    backend "s3" {
      bucket         = "terraform-state"
      // ...
+     profile        = "my_profile_name"
    }
  }

我阅读或观看的指南或视频都没有包含profile属性,但在Terraform文档中对此进行了解释:
https://www.terraform.io/language/settings/backends/s3

hkmswyz6

hkmswyz63#

在我的例子中,我设置了环境变量AWS_ACCESS_KEY_IDAWS_DEFAULT_REGIONAWS_SECRET_ACCESS_KEY。这绕过了我的~/.aws/credentials文件。简单地取消设置这些环境变量对我很有效!

avkwfej4

avkwfej44#

我的问题与VS代码调试控制台有关:AWS_PROFILEAWS_REGION环境变量没有加载。为了解决这个问题,我关闭了vscode,然后使用命令code <project-folder>通过CLI重新打开。

xtfmy6hx

xtfmy6hx5#

我使用了aws configure并提供了密钥,如下所示
查看我收到的错误的图像

但我还是收到了无效令牌错误。

请回答

我已经清除了**~/.aws/credentials中的所有内容,然后再次运行aws configure**并提供了我的密钥。
对我很有效,你也试试

相关问题