Amazon S3에서 발생한 HTTP 500 또는 503 오류에 대한 해결 방법은 무엇입니까?

최종 업데이트 날짜: 2021년 12월 17일

Amazon Simple Storage Service(Amazon S3)로 사본 생성 또는 객체 업로드를 요청할 경우, Amazon S3는 다음 메시지 중 하나를 보냅니다.

AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D)

AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D)

이 오류는 어떻게 해결합니까?

간략한 설명

오류 코드 500 Internal Error는 Amazon S3이 요청을 그 당시에 해결하지 못했다는 의미입니다. 오류 코드 503 Slow Down은 일반적으로 S3 버킷에 대한 요청 수가 요청 비율을 초과하여 매우 많음을 나타냅니다. (예를 들어, S3 버킷에서 접두사마다 초당 3,500개의 PUT/COPY/POST/DELETE 요청 또는 5,500개의 GET/HEAD 요청을 전송할 수 있습니다.) 하지만 일부 경우에는 요청이 교차 리전 복사에 사용할 수 있는 대역폭의 양을 초과할 때 Amazon S3가 503 Slow Down 응답을 반환할 수 있습니다.

Amazon S3는 배포된 서비스이기 때문에 일반적으로 서비스를 사용하는 동안에는 5xx 오류의 발생 확률이 매우 낮습니다. Amazon S3에서 5xx 오류를 반환하는 모든 요청은 다시 시도할 수 있습니다. 따라서 Amazon S3에 요청하는 애플리케이션에 대해 내결함성 메커니즘을 사용하거나 재시도 로직을 구현하는 것이 모범 사례입니다. 이렇게 하면 S3에서 이러한 오류를 복구할 수 있습니다.

5xx 오류를 해결하거나 방지하려면 다음 접근 방식을 고려하십시오.

  • 요청을 만드는 애플리케이션의 재시도 매커니즘을 활성화합니다.
  • 애플리케이션을 구성하여 점진적으로 요청률을 높입니다.
  • 다수의 접두사에 객체를 분산합니다.
  • 500 Internal Error 응답 수를 모니터링합니다.
  • 대체 방법을 사용하여 데이터를 복사합니다.

해결 방법

요청을 만드는 애플리케이션의 재시도 매커니즘을 활성화합니다.

Amazon S3의 분산 성질 때문에 500 또는 503 오류를 반환하는 요청이 재시도될 수 있습니다. Amazon S3로 요청하는 애플리케이션에 재시도 논리를 빌드할 수 있는 모범 사례입니다. 애플리케이션의 재시도 로직을 업데이트하려면, 애플리케이션의 재시도 횟수를 "10"으로 설정합니다.

모든 AWS SDK에는 지수 백오프를 사용하는 알고리즘이 적용된 재시도 메커니즘이 내장되어 있습니다. 이 알고리즘은 오류 응답이 연이어 나올 때마다 재시도 간 대기 시간을 점진적으로 늘립니다. 대부분의 지수 백오프 알고리즘은 지터(임의 지연)를 사용하여 연쇄 충돌을 방지합니다. 자세한 내용은 AWS의 오류 재시도 및 지수 백오프를 참조하세요.

애플리케이션을 구성하여 점진적으로 요청률을 높입니다.

503 Slow Down 오류를 피하려면 낮은 요청률(초당 트랜잭션)에 시작할 수 있도록 애플리케이션을 구성합니다. 그런 다음 애플리케이션 요청률을 기하급수적으로 늘리십시오. Amazon S3는 자동적으로 높은 요청률을 처리하기 위해 조정합니다.

다수의 접두사에 객체를 분산합니다.

요청 빈도 및 성능 지침에 기재된 요청률은 S3 버킷에서 접두사당 적용합니다. 전체적으로 더 높은 요청률을 처리하기 위해서 버킷을 설정하고 503 Slow Down 오류를 피하려면 다수의 접두사 객체를 분산할 수 있습니다. 예를 들어, S3 버킷을 사용하여 이미지 및 비디오를 저장하려면 이 파일을 다음과 비슷한 두 접두사로 분산할 수 있습니다.

  • mybucket/images
  • mybucket/videos

접두사의 요청 비율이 점진적으로 증가하면, Amazon S3는 두 개별 접두사에 대한 요청을 처리하도록 확장됩니다. (S3는 초당 3,500건의 PUT/POST/DELETE 또는 5,500개의 GET 요청을 처리하도록 확장됩니다.) 결과적으로 버킷이 처리하는 전체 요청 비율이 두 배로 늘어납니다.

500 Internal Error 응답 수 모니터링하기

수신되는 500 Internal Error 응답의 수를 모니터링하려면 다음 옵션 중 하나를 사용하면 됩니다.

대체 방법을 사용하여 데이터 복사하기

리전 간에 데이터를 복사하는 다른 방법은 다음 옵션을 고려하십시오.

  • Amazon EMR에서 S3DistCp 작업을 사용합니다. 자세한 내용은 Seven Tips for Using S3DistCp on Amazon EMR to Move Data Efficiently Between HDFS and Amazon S3를 참조하십시오.
    중요: 이 접근 방식은 Amazon EMR을 사용해야 하므로 Amazon EMR 요금을 검토해야 합니다.
  • 소스 버킷에서 GET 작업을 수행한 다음 대상 버킷에 PUT 작업을 시도합니다.
  • 소스 버킷에서 교차 리전 복제(CRR)를 활성화합니다. CRR은 객체를 대상 버킷에 자동 및 비동기식으로 복사합니다.
    참고: CRR을 활성화하면 새 객체가 대상 버킷에 자동으로 복사됩니다. CRR을 활성화하기 전에 소스 버킷에 있던 객체는 자동으로 복사되지 않습니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?