AWS CLI 重試 - AWS Command Line Interface

本文件僅適用於第 1 AWS CLI 版。如需與版本 2 的相關文件 AWS CLI,請參閱第 2 版使用者指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS CLI 重試

本主題描述如何 AWS CLI 可能會看到由於意外問題而對 AWS 服務的呼叫失敗。這些問題可能會發生在伺服器端,也可能會因為您嘗試呼叫的 AWS 服務受到速率限制而失敗。這些種類的失敗通常不需要特殊處理,因為通常在短暫的等待時間後會自動再次進行呼叫。 AWS CLI 提供許多功能,以協助在遇到這些類型的錯誤或例外狀況時,重試用戶端對 AWS 服務的呼叫。

可用的重試模式

AWS CLI 具有多種模式可供選擇,具體取決於您的版本:

傳統重試模式

舊版模式是第 1 AWS CLI 版使用的預設模式。傳統模式使用較舊的重試處理常式,其有限的功能包含:

  • 預設值 4 表示的是重試嘗試次數上限,總共允許嘗試 5 次呼叫。此數值可透過 max_attempts 組態參數加以覆寫。

  • DynamoDB 中的預設值 9 表示的是重試嘗試次數上限,總共允許嘗試 10 次呼叫。此數值可透過 max_attempts 組態參數加以覆寫。

  • 適用於下列有限數量的錯誤/例外狀況的重試嘗試次數:

    • 一般通訊埠/連線錯誤:

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • 服務端調節/限制錯誤及例外狀況:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • 重試對多個HTTP狀態碼進行嘗試,包括 429、500、502、503、504 和 509。

  • 任何重試嘗試都會包含基本係數為 2 的指數退避。

標準重試模式

標準模式是一組標準的重試規則, AWS SDKs具有比舊版更多的功能。 已針對 AWS CLI 版本 2 建立標準模式,並反向移植至 AWS CLI 版本 1。標準模式的功能包含:

  • 預設值 2 表示的是重試嘗試次數上限,總共允許嘗試 3 次呼叫。此數值可透過 max_attempts 組態參數加以覆寫。

  • 適用於下列展開清單中錯誤/例外狀況的重試嘗試次數:

    • 暫時性錯誤/例外狀況

      • RequestTimeout

      • RequestTimeoutException

      • PriorRequestNotComplete

      • ConnectionError

      • HTTPClientError

    • 服務端調節/限制錯誤及例外狀況:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • TooManyRequestsException

      • ProvisionedThroughputExceededException

      • TransactionInProgressException

      • RequestLimitExceeded

      • BandwidthLimitExceeded

      • LimitExceededException

      • RequestThrottled

      • SlowDown

      • EC2ThrottledException

  • 對非描述性、暫時性錯誤代碼的重試嘗試次數。具體來說,這些HTTP狀態碼:

  • 任何重試嘗試都會包含基本係數為 2 的指數退避,且退避時間最長為 20 秒。

自適應重試模式

警告

自適應模式是一種實驗模式,且功能及行為會隨時變更。

自適應重試模式是一種實驗性重試模式,其中包含標準模式的所有功能。除了標準模式功能之外,自適應模式還會透過使用字符儲存貯體和每次重試嘗試時會動態更新的速率限制變數,引進用戶端速率限制。此模式在用戶端重試中提供彈性,以適應服務的錯誤/例外狀態回應。 AWS

對於每次新的重試嘗試,自適應模式都會根據服務回應中顯示的錯誤、例外狀況或HTTP狀態碼來修改速率限制變數。 AWS 之後,這些速率限制變數會用於計算用戶端的新呼叫速率。來自 AWS 服務的每個例外/錯誤或非成功HTTP回應 (在上述清單中提供) 都會在重試發生時更新速率限制變數,直到達到成功、Token 值區用盡,或達到設定的嘗試次數上限值為止。

設定重試模式

AWS CLI 包括各種重試配置以及在創建客戶端對象時要考慮的配置方法。

可用組態方法

在中 AWS CLI,使用者可以透過下列方式設定重試次數:

  • 環境變數

  • AWS CLI 組態檔案

使用者可以自訂以下重試選項:

  • 重試模式-指定 AWS CLI 使用的重試模式。如前所述,有三種可用的重試模式:傳統、標準及自適應。AWS CLI 版本 1 的預設值為舊AWS CLI

  • 嘗試次數上限-指定重試處理常式使用的 AWS CLI 重試次數上限值,其中初始呼叫會計入您提供的值。預設值為 5。

在環境變數中定義重試組態

若要定義的重試組態 AWS CLI,請更新作業系統的環境變數。

重試環境變數是:

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

如需環境變數的詳細資訊,請參閱 要設定的環境變數 AWS CLI

檢視重試嘗試的記錄

AWS CLI 使用 Boto3 的重試方法和日誌記錄。您可以針對任何命令,使用 --debug 選項來接收偵錯記錄。如需如何使用 --debug 選項的相關資訊,請參閱 命令列選項

如果您在偵錯記錄中搜尋「retry」,就能找到所需的重試資訊。重試嘗試的用戶端記錄項目視您已啟用的重試模式而定。

傳統模式:

重試訊息會由 botocore.retryhandler 產生。您會看到以下三條訊息中的某一條:

  • No retry needed

  • Retry needed, action of: <action_name>

  • Reached the maximum number of retry attempts: <attempt_number>

標準或自適應模式:

重試訊息會由 botocore.retries.standard 產生。您會看到以下三條訊息中的某一條:

  • No retrying request

  • Retry needed, retrying request after delay of: <delay_value>

  • Retry needed but retry quota reached, not retrying request

有關肉毒核重試的完整定義文件,請參閱肉核存儲庫上的 _retr y.json。 GitHub