如何避免 Route 53 API 限流錯誤?

1 分的閱讀內容
0

我在 Amazon Route 53 中收到 API 限流錯誤。

簡短描述

當您對 Route 53 執行大量 API 呼叫時,可能會收到 HTTP 400 (錯誤的請求) 錯誤。

回應標頭的代碼元素值為限流,與訊息元素值為超過速率,表示出現速率限流。當 API 請求數量大於每個帳戶每秒五個請求的硬性限制時,就會出現速率限流。

如果 Route 53 無法在針對相同託管區域的下一個請求之前處理該請求,則後續請求將遭到拒絕,並出現另一個 HTTP 400 錯誤。回應標頭包含以下兩個元素:

  • 值為 PriorRequestNotComplete代碼元素
  • 值為請求遭拒,因爲 Route 53 仍在處理先前請求訊息元素。

來自同一帳戶的 AWS Identity and Access Management (IAM) 使用者的 API 呼叫會計入該帳戶的全球速率限流。來自這些 IAM 使用者的 API 呼叫也會影響從 AWS 管理主控台發出的 API 呼叫。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確認您使用的是最新的 AWS CLI 版本

若要避免速率限流,請使用下列任何一種方法:

批次處理請求

若要減少 API 呼叫,請使用 AWS CLI 或您偏好的開發套件,將相同類型的個別操作分組為一個變更批次操作。

例如,透過一個批次操作請求 CREATE、DELETE 或 UPSERT (更新並插入) 多筆記錄。在 AWS CLI 中使用 change-resource-record-sets 命令執行批次資源記錄操作。

注意:

  • UPSERT 請求雙次計數。
  • change-resource-record-sets API 呼叫中的元素和字元具有配額

使用錯誤重試和指數退避

若要避免限流,請在 Route 53 API 呼叫中新增錯誤重試和指數退避。例如,使用簡單的指數退避演算法,在 2^i 秒內重試呼叫,其中 i 是重試次數。

隨機開始時間

隨機呼叫 Route 53 API 的開始時間。確認沒有多個應用程式同時處理該邏輯。同步請求可能造成限流。

在兩次呼叫之間引入「睡眠時間」

如果程式碼函數連續呼叫 Route 53 API,則在兩次呼叫之間新增「睡眠時間」,以將限流的風險降到最低。

AWS 官方
AWS 官方已更新 10 個月前