AWS CLI 에서 재시도 AWS CLI - AWS Command Line Interface

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

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

AWS CLI 에서 재시도 AWS CLI

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

사용 가능한 재시도 모드

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

  • 설명적이지 않은 일시적인 오류 코드에 대한 재시도 횟수. 특히 500, 502, 503, 504 HTTP 상태 코드입니다.

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

적응형 재시도 모드

주의

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

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

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

재시도 모드 구성

에는 클라이언트 객체를 생성할 때 고려해야 할 다양한 재시도 구성과 구성 방법이 모두 AWS CLI 포함되어 있습니다.

사용 가능한 구성 방법

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

  • 환경 변수

  • AWS CLI 구성 파일

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

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

  • 최대 시도 횟수 - AWS CLI 재시도 핸들러가 사용하는 최대 재시도 횟수의 값을 지정합니다. 여기서 초기 호출은 사용자가 제공하는 값으로 계산됩니다. 기본값은 5입니다.

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

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

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

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

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

재시도 로그 보기

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

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

레거시 모드:

재시도 메시지는 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

botocore 재시도의 전체 정의 파일은 botocore GitHub 리포지토리_retry.json을 참조하세요.