如何解決 IAM 和 AWS STS 的 API 限流或「超過費率」錯誤?

1 分的閱讀內容
0

我的應用程序收到類似於「限流: 超過費率,狀態代碼: 400」。

簡短說明

來自 AWS 管理主控台、AWS Command Line Interface (AWS CLI) 和應用程式的 API 呼叫促成 AWS 帳戶費率上限。

**注意:**您無法增加 AWS 服務費率限制。

解決方法

為避免限流錯誤,請遵循下列最佳做法:

  • 在應用程式的程式碼中實作指數退避。每次對 AWS 的 API 呼叫進行限流時,指數退避允許更長的等待時間。視應用程式而定,延遲次數上限和重試次數上限可能會有所不同。
    注意: AWS SDK 會實作自動重試邏輯和指數退避演算法。
  • 某些應用程序可以實作快取來降低 API 呼叫的速率。例如,假設您的應用程式呼叫跨帳戶工作流程 API 呼叫 AssumeRole。這意味著您收到的暫時憑證可被儲存並重複用於多個跨帳戶呼叫。此外,您不需要為每個跨帳戶 API 呼叫進行新的 AssumeRole 呼叫。
  • 如果您的應用程式呼叫 AssumeRole 並快取憑證,請檢查角色暫時憑證工作階段時間上限。當您延長暫時憑證的持續時間時,不需要頻繁呼叫 AssumeRole
  • 將 API 呼叫分佈於更長的時間內,而不是一次呼叫所有 API。例如,有些應用程式每日的作業都會呼叫 SimulatePrincipalPolicyGenerateServiceLastAccessedDetails 來稽核 AWS 身分與存取管理 (IAM) 使用者和角色的權限。您可以分散執行 API 呼叫,而不是同時呼叫它們。
  • 對於使用 CreatePolicyVersion 等 API 呼叫動態變更 IAM 政策權限的應用程式,請考慮其他方法。例如,您可以在承擔 IAM 角色期間使用工作階段政策
  • 對於 AWS Security Token Service (AWS STS) 限流錯誤,請使用 AWS 區域 STS 端點,而不是將所有 AWS STS 呼叫傳送到全域端點。每個端點都有單獨的限流限制。區域 AWS STS 端點可以在 AWS STS API 呼叫上為應用程式提供更快的回應時間。
  • 由於 AWS 帳戶具有單獨的限流限制,因此請考慮使用 AWS Organizations 將工作負載分散到多個帳戶。建立新的 AWS 帳戶無需額外費用,Organizations 提供合併帳單。服務控制政策 (SCP) 可讓您控制 AWS 帳戶中 IAM 使用者和角色的最大權限。如需詳細資訊,請參閱透過 AWS Organizations 管理帳戶如何開始使用 AWS Organizations?

相關資訊

如何在 Amazon Athena 中自動建立表格,以便透過 AWS CloudTrail 日誌進行搜尋?

如何找出哪個 API 呼叫造成「超過費率」錯誤?

AWS 官方
AWS 官方已更新 1 年前