내용으로 건너뛰기

CloudFront "503 Service Unavailable" 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

Amazon CloudFront 배포에서 "503 Service Unavailable" 오류가 발생했습니다.

해결 방법

HTTP 503 상태 코드(서비스 이용 불가)를 해결하려면 오류에 대한 다음 작업을 수행하십시오.

오리진 서버의 HTTP 503 오류

오리진 서버에 성능 문제가 있거나 서버를 사용할 수 없는 경우 "503 Service Unavailable" 오류가 발생할 수 있습니다.

이 문제를 해결하려면 오리진 서버의 용량이 요청 속도를 지원할 만큼 충분하지 않음을 참조하십시오.

Lambda@Edge 또는 CloudFront 함수 관련 HTTP 503 오류

AWS Lambda 함수에 처리되지 않은 예외가 있거나 코드에 오류가 있는 경우 "503 Service Unavailable" 오류가 발생할 수 있습니다.

코드를 수정하려면 Lambda 함수에 로깅 문을 추가하십시오. Lambda@Edge 로그CloudFront 함수 로그를 검토하여 CloudFront가 제대로 작동하는지 확인합니다. 자세한 내용은 Lambda의 간접 호출 문제 해결Lambda의 실행 문제 해결을 참조하십시오.

Lambda@Edge 할당량을 초과하면 Lambda가 Lambda 함수 실행을 차단하고 CloudFront는 HTTP 503 오류를 반환합니다. 할당량 초과로 인한 HTTP 503 오류를 해결하려면 CloudFront에서 Lambda@Edge 함수로 인해 발생하는 502 및 503 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

Amazon S3 관련 HTTP 503 오류

통합 애플리케이션이 있거나 오리진에서 Amazon Simple Storage Service(Amazon S3)를 사용하는 경우, HTTP 500 또는 503 오류가 발생할 수 있습니다. 이러한 오류를 해결하려면 Amazon S3에서 발생하는 HTTP 500 또는 503 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

CloudFront가 HTTP 503 오류를 캐싱하지 못하도록 방지

CloudFront는 기본적으로 오리진에서 클라이언트로 오류 응답을 전달합니다. CloudFront는 오리진의 오류 응답을 10초 동안 캐싱합니다.

오리진의 오류 응답에 Cache-Control 헤더가 포함된 경우 CloudFront는 기본값인 10초가 아닌 관련 TTL(Time to Live)을 사용하여 오류를 캐싱합니다. CloudFront는 사용자 지정 오류 응답에서 달리 지정하지 않는 한 자체 오류 응답을 캐싱하지 않습니다. TTL이 0초인 HTTP 503 오류에 대한 사용자 지정 오류 응답을 만들어 CloudFront가 오류를 캐싱하지 않도록 방지할 수 있습니다.

캐시 효율성을 최적화하려면 CachingOptimized 정책을 사용하십시오. 이 정책은 오류 응답에 대한 최소 TTL을 기본값인 10초 대신 1초로 더 낮게 설정합니다. 자세한 내용은 관리형 캐시 정책 사용을 참조하십시오.

HTTP 503 오류를 반환하는 요청을 재시도하도록 애플리케이션에 재시도 로직을 구축하는 것이 가장 좋습니다. 모든 AWS SDK에는 지수 백오프를 사용하는 알고리즘을 갖춘 재시도 메커니즘이 내장되어 있습니다. 이 알고리즘은 연속적인 오류 응답에 대한 재시도 사이의 대기 시간을 점점 더 연장합니다. 많은 지수 백오프 알고리즘에는 연속적인 충돌을 방지하기 위해 지터(무작위 지연)가 사용됩니다. 자세한 내용은 재시도 동작을 참조하십시오.

AWS 공식업데이트됨 5달 전