이 설명서는 의 버전 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