The security token included in the request is expired

TL;DR — 你的臨時 AWS 憑證超時了。這隻發生在 STS/SSO/擔任角色的憑證上(不是長期的 IAM 使用者金鑰)。重新整理會話——重新執行 aws sso login 或重新擔任角色——確保 AWS_SESSION_TOKEN 是新的那個,並清除環境中殘留的任何陳舊 token。

這是什麼意思

ExpiredTokenException: The security token included in the request is expired

AWS 拒絕了你的請求,因為簽名它所用的臨時安全憑證已經過期。來自 STS(AssumeRole、SSO、GetSessionToken、EC2/ECS 例項角色)的臨時憑證存活於一個有界的視窗——角色會話從 15 分鐘到角色的最大會話時長設定(在 1 到 12 小時之間;預設 1 小時),而一個 IAM 使用者的 GetSessionToken 憑證預設 12 小時,可延長到 36 小時。一旦那個視窗過去,用它們簽名的每個請求都會以 ExpiredTokenException 失敗。用同一個過期 token 重發會再次失敗——只有在你重新整理之後重試才值得。

為什麼會發生

  • STS/SSO 會話乾脆超時了——擔任角色的憑證在角色的會話時長(預設 1 小時,可配置到 12 小時)到期;一個 SSO 會話同樣會過期。
  • 環境中一個陳舊的 AWS_SESSION_TOKEN——一個匯出到你 shell(或一個 .env)中的舊會話 token 在它過期後仍被繼續使用;環境變數不會自動重新整理。
  • 一個長時間執行的程序在啟動時獲取了一次憑證卻從不重新整理它們。
  • 快取的憑證~/.aws/cli/cache 或一個 SDK 憑證快取中超過了它們的到期時間。
  • 時鐘偏移——一臺時鐘偏得夠遠的機器可能讓有效憑證看起來過期。

如何修正

  1. 重新整理會話。 重新執行 aws sso login(對 SSO)或重新擔任角色(aws sts assume-role …),獲取一個新的訪問金鑰、金鑰和會話 token。
  2. 一起更新全部三個值——訪問金鑰 ID、金鑰訪問金鑰,以及會話 token。一個新金鑰配上一個陳舊的 token 仍會失敗。
  3. 清除陳舊的環境變數——unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN,然後重新載入新憑證或切換到一個 SDK 能自行重新整理的 profile。
  4. 讓 SDK 管理生命週期——配置一個 profile / 憑證提供者(SSO、assume_role、例項角色),讓 SDK 在到期前自動重新整理,而不是固定一個 token。
  5. aws sts get-caller-identity 核實——如果它成功,你的憑證就是當前的。
  6. 檢查時鐘(NTP),如果一切看起來都是新的但請求仍報告過期。

從 DynoTable 連線

DynoTable 會在每次連線時重新解析你的設定檔案—— 包括 SSO 會話和受 MFA 保護的擔任角色——所以會話一旦續期,你的表不用重啟就會回來。 臨時憑證過期時,設定檔案膠囊上的狀態點會變紅,並顯示 Sign in(SSO)或 Reconnect;點它,或者重新執行一次查詢,就能觸發應用內的重新整理流程。按 ⌘P 確認你正處在你剛在終端裡重新整理過的那個設定檔案上。 查詢構建器是個快速的健全性檢查,可以確認重新整理之後帶簽名的讀取確實成功。

常見問題

如何修復“請求中包含的安全令牌已過期”? 你的臨時憑證已過期。重新整理它們 — 重新執行 aws sso 登入或重新承擔角色 — 並一起更新訪問金鑰、金鑰和 AWS_SESSION_TOKEN。清除 shell 中殘留的所有過時令牌,以便舊令牌不會被重複使用,並且更喜歡自動重新整理的 SDK 憑據提供程式。

為什麼我只能透過臨時憑證才能獲得此資訊? ExpiredTokenException 適用於有時間限制的 STS/SSO/假定角色憑證,這些憑證帶有過期時間。長期存在的 IAM 使用者訪問金鑰不會自行過期,因此它們會因其他原因(無效/禁用)而不是此原因引發憑證錯誤。

相關錯誤

來源

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。