AWS CLI 재시도 - AWS Command Line Interface

이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS CLI 재시도

이 항목에서는 예상치 못한 문제로 인해 AWS 서비스 호출이 실패할 AWS CLI 수 있는 방법에 대해 설명합니다. 이러한 문제는 서버 측에서 발생하거나 호출하려는 AWS 서비스의 속도 제한으로 인해 실패할 수 있습니다. 이러한 종류의 실패는 일반적으로 특별한 처리가 필요하지 않으며 주로 짧은 대기 기간 후에 자동으로 다시 호출됩니다. 에서는 이러한 종류의 오류나 예외가 발생할 경우 AWS 서비스에 대한 클라이언트 호출을 재시도하는 데 도움이 되는 다양한 기능을 AWS CLI 제공합니다.

사용 가능한 재시도 모드

버전에 따라 다양한 모드를 선택할 수 있습니다. AWS CLI

레거시 재시도 모드

레거시 모드는 AWS CLI 버전 1에서 사용하는 기본 모드입니다. 레거시 모드는 다음을 포함하는 제한된 기능을 가진 이전 재시도 핸들러를 사용합니다.

  • 최대 재시도 횟수에 대한 기본값은 4이며, 총 5회의 호출을 시도합니다. 이 값은 max_attempts 구성 파라미터를 통해 덮어쓸 수 있습니다.

  • DynamoDB는 최대 재시도 횟수의 기본값이 9이며, 총 10회의 호출을 시도합니다. 이 값은 max_attempts 구성 파라미터를 통해 덮어쓸 수 있습니다.

  • 다음과 같은 제한된 수의 오류/예외에 대한 재시도 횟수:

    • 일반 소켓/연결 오류:

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • 서비스 측 조절/제한 오류 및 예외:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • 429, 500, 502, 503, 504, 509 등 여러 HTTP 상태 코드에 대해 다시 시도합니다.

  • 모든 재시도 횟수에는 기본 계수 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 상태 코드는 500, 502, 503, 504입니다.

  • 모든 재시도 횟수에는 최대 백오프 시간 20초 동안 기본 계수 2의 지수 백오프가 포함됩니다.

적응형 재시도 모드

주의

적응형 모드는 실험적 모드이며 기능 및 동작 모두 변경될 수 있습니다.

적응형 재시도 모드는 표준 모드의 모든 기능을 포함하는 실험적 재시도 모드입니다. 표준 모드 기능 외에도 적응형 모드는 각 재시도 시 동적으로 업데이트되는 토큰 버킷 및 속도 제한 변수를 사용하여 클라이언트 측 속도 제한도 도입합니다. 이 모드는 서비스의 오류/예외 상태 응답에 맞게 유연하게 클라이언트측 재시도를 수행할 수 있도록 합니다. AWS

적응형 모드는 새로 재시도할 때마다 서비스 응답에 표시된 오류, 예외 또는 상태 코드를 기반으로 속도 제한 변수를 수정합니다. HTTP AWS 이러한 속도 제한 변수는 클라이언트의 새 호출 속도를 계산하는 데 사용됩니다. AWS 서비스의 각 예외/오류 또는 비성공 HTTP 응답 (위 목록 참조) 은 성공에 도달하거나, 토큰 버킷이 소진되거나, 구성된 최대 시도 횟수 값에 도달할 때까지 재시도가 발생하면 속도 제한 변수를 업데이트합니다.

재시도 모드 구성

AWS CLI 여기에는 다양한 재시도 구성과 클라이언트 객체 생성 시 고려해야 할 구성 방법이 모두 포함됩니다.

사용 가능한 구성 방법

에서 AWS CLI사용자는 다음과 같은 방법으로 재시도를 구성할 수 있습니다.

  • 환경 변수

  • AWS CLI 구성 파일

사용자는 다음 재시도 옵션을 사용자 지정할 수 있습니다.

  • 재시도 모드 - 사용할 재시도 모드를 지정합니다. AWS CLI 앞에서 설명한 대로 레거시, 표준 및 적응형, 이렇게 3가지 재시도 모드를 사용할 수 있습니다. AWS CLI 버전 1의 기본값은 레거시AWS CLI 버전 2가 .

  • 최대 시도 횟수 - 재시도 핸들러가 사용하는 최대 AWS CLI 재시도 횟수 값을 지정합니다. 이때 초기 호출은 입력한 값에 포함됩니다. 기본값은 5입니다.

환경 변수에서 재시도 구성 정의

에 대한 재시도 구성을 정의하려면 운영 체제의 환경 변수를 업데이트하십시오. AWS CLI

재시도 환경 변수는 다음과 같습니다.

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

환경 변수에 대한 자세한 내용은 구성할 환경 변수 AWS CLI 섹션을 참조하세요.

재시도 로그 보기

AWS CLI 는 Boto3의 재시도 방법론과 로깅을 사용합니다. 모든 명령에서 --debug 옵션을 사용하여 디버그 로그를 받을 수 있습니다. --debug 옵션을 사용하는 방법에 대한 자세한 내용은 명령줄 옵션 섹션을 참조하세요.

디버그 로그에서 “재시도”를 검색하면 필요한 재시도 정보를 찾을 수 있습니다. 재시도를 위한 클라이언트 로그 항목은 활성화한 재시도 모드에 따라 다릅니다.

레거시 모드:

재시도 메시지는 botocore.retryhandler에 의해 생성됩니다. 다음 3가지 메시지 중 하나가 표시됩니다.

  • No retry needed

  • Retry needed, action of: <action_name>

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

표준 또는 적응형 모드:

재시도 메시지는 botocore.retries.standard에 의해 생성됩니다. 다음 3가지 메시지 중 하나가 표시됩니다.

  • No retrying request

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

  • Retry needed but retry quota reached, not retrying request

보토코어 재시도에 대한 전체 정의 파일은 보토코어 리포지토리의 _retry.json을 참조하십시오. GitHub