기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CLI 에서 재시도 AWS CLI
이 주제에서는 가 예기치 않은 문제로 인해 AWS 서비스 호출이 실패하는 것을 볼 AWS CLI 수 있는 방법을 설명합니다. 이러한 문제는 서버 측에서 발생하거나 호출하려는 AWS 서비스의 속도 제한으로 인해 실패할 수 있습니다. 이러한 종류의 실패는 일반적으로 특별한 처리가 필요하지 않으며 주로 짧은 대기 기간 후에 자동으로 다시 호출됩니다. 는 AWS CLI 이러한 종류의 오류 또는 예외가 발생할 때 AWS 서비스에 대한 클라이언트 호출을 재시도하는 데 도움이 되는 다양한 기능을 제공합니다.
사용 가능한 재시도 모드
AWS CLI 에는 버전에 따라 선택할 수 있는 여러 모드가 있습니다.
레거시 재시도 모드
레거시 모드는 다음을 포함하는 제한된 기능을 가진 이전 재시도 핸들러를 사용합니다.
-
최대 재시도 횟수에 대한 기본값은 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 버전 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 버전 2입니다.
-
최대 시도 횟수 - AWS CLI 재시도 핸들러가 사용하는 최대 재시도 횟수의 값을 지정합니다. 여기서 초기 호출은 사용자가 제공하는 값으로 계산됩니다. 기본값은 5입니다.
환경 변수에서 재시도 구성 정의
에 대한 재시도 구성을 정의하려면 운영 체제의 환경 변수를 AWS CLI업데이트합니다.
재시도 환경 변수는 다음과 같습니다.
-
AWS_RETRY_MODE
-
AWS_MAX_ATTEMPTS
환경 변수에 대한 자세한 내용은 에 대한 환경 변수 구성 AWS CLI 섹션을 참조하세요.
구성 파일에서 재시도 AWS 구성 정의
재시도 구성을 변경하려면 글로벌 AWS 구성 파일을 업데이트합니다. AWS 구성 파일의 기본 위치는 ~/.aws/config입니다.
다음은 AWS 구성 파일의 예입니다.
[default] retry_mode = standard max_attempts = 6
구성 파일에 대한 자세한 내용은 의 구성 및 보안 인증 파일 설정 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