簡體   English   中英

InvalidClientTokenId:請求中包含的安全令牌無效。 狀態碼:403

[英]InvalidClientTokenId: The security token included in the request is invalid. status code: 403

我正在使用 terraform 和 kubectl 來部署基礎架構和應用程序。

由於我更改了 aws 配置:

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" {

你能建議嗎? 欣賞 !

這里

這是一個一般錯誤,可能由幾個原因引起。

一些例子:

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包含加號+或多個正斜杠/等字符時。 這里查看更多信息。
解決方案:刪除憑據並生成新憑據。


3) 當您嘗試在必須顯式啟用(但未啟用)的區域內執行 Terraform 時。
(就我而言,它是me-south-1 (Bahrain) - 在這里查看更多信息)。
解決方案:啟用區域或移動到啟用的區域。


4) 如果您使用Vault等 3rd 方工具並且不提供有效的 AWS 憑證進行通信 - 請在 此處查看更多信息。


所有這些都會導致 aws sts:GetCallerIdentity API 失敗。

添加 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...
// main.tf

terraform {
  backend "s3" {
    bucket         = "terraform-state"
    encrypt        = true
    key            = "terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-state-locks"
  }
}

這是有效的修復(顯示差異,我在開頭添加了帶有“+”的行):

  // main.tf

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

我閱讀或觀看的指南或視頻都沒有包含profile屬性。 但它在 Terraform 文檔中進行了解釋,這里:

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

就我而言,事實證明我設置了環境變量AWS_ACCESS_KEY_IDAWS_DEFAULT_REGIONAWS_SECRET_ACCESS_KEY 這繞過了我的~/.aws/credentials文件。 簡單地取消設置這些環境變量對我有用!

我的問題與 VS Code 調試控制台有關:未加載AWS_PROFILEAWS_REGION環境變量。 為了解決這個問題,我關閉了 vscode 並使用命令code <project-folder>通過 CLI 重新打開。

我使用了aws configure並提供了我的密鑰,如下所示查看我得到的錯誤圖片

但我仍然收到無效令牌錯誤。

回答

我已經清除了~/.aws/credentials中的所有內容,然后再次運行aws configure並提供了我的密鑰。

它對我有用。 也試試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM