如何解決 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 Identity and Access Management (IAM) 使用者和角色之許可的應用程式。您可以交錯進行 API 呼叫,而不是同時執行呼叫。
  • 對於使用 API 呼叫 (如 CreatePolicyVersion) 動態變更 IAM 政策許可的應用程式,請考慮其他方法。例如,您可以在 IAM 角色代入期間使用工作階段政策
  • 對於 AWS Security Token Service (AWS STS) 調節錯誤,請考慮使用區域 STS 端點,而不是將所有 AWS STS 呼叫傳送至全域端點。每個端點都有一個單獨的調節限制。使用區域 AWS STS 端點可以為應用程式提供更快的 AWS STS API 呼叫的回應時間。
  • 如果您不確定 AWS 帳戶中哪個 IAM 使用者或角色正在進行大量 API 呼叫,則請使用 AWS CloudTrail 檢視 Event history (事件歷史記錄)。您還可以使用 Amazon Athena 執行 SQL 查詢並篩選 CloudTrail 日誌。如需指示,請參閱如何找到導致「速率超出」錯誤的 API 呼叫?
  • 由於 AWS 帳戶具有單獨的調節限制,因此請考慮使用 AWS Organizations 將工作負載分散於多個帳戶之間。建立新 AWS 帳戶無需額外成本,Organizations 提供整合帳單。透過使用服務控制政策 (SCP),您可以控制 AWS 帳戶中 IAM 使用者和角色的最大許可。有關更多資訊,請參閲透過 AWS Organizations 管理帳戶如何開始使用 AWS Organizations?

相關資訊

如何在 Amazon Athena 中自動建立資料表以搜尋 AWS CloudTrail 日誌?

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