사용자 지정 오류 응답 생성 중 - 아마존 CloudFront

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

사용자 지정 오류 응답 생성 중

어떤 이유로든 서비스를 CloudFront 제공하는 객체를 사용할 수 없는 경우 웹 서버는 일반적으로 관련 HTTP 상태 코드를 CloudFront 반환하여 이를 나타냅니다. 예를 들어, 뷰어가 잘못된 URL을 요청하면 웹 서버는 HTTP 404 (Not Found) 상태 코드를 에 CloudFront CloudFront 반환하고 해당 상태 코드를 뷰어에게 반환합니다.

원하는 경우 CloudFront 뷰어에게 사용자 지정 오류 응답을 대신 반환하도록 구성할 수 있습니다. 또한 오류 발생 시 CloudFront 응답 방식을 관리하는 몇 가지 옵션도 있습니다. 사용자 지정 오류 메시지의 옵션을 지정하려면 CloudFront 배포를 업데이트하여 해당 값을 지정해야 합니다. 자세한 설명은 오류 응답 동작 구성 섹션을 참조하세요.

HTTP 상태 코드에 대한 사용자 지정 오류 페이지를 CloudFront 반환하도록 구성했지만 사용자 지정 오류 페이지를 사용할 수 없는 경우 사용자 지정 오류 페이지가 포함된 오리진에서 CloudFront 수신한 상태 코드를 뷰어에게 CloudFront 반환합니다. 예를 들어 사용자 지정 오리진이 500 상태 코드를 반환하고 Amazon S3 버킷에서 500 상태 코드에 대한 사용자 지정 오류 페이지를 CloudFront 가져오도록 구성했다고 가정해 보겠습니다. 하지만 누군가 실수로 버킷에서 사용자 지정 오류 페이지를 삭제했습니다. CloudFront 객체를 요청한 최종 사용자에게 HTTP 404 상태 코드 (Not Found) 를 반환합니다.

사용자 지정 오류 페이지를 뷰어에게 CloudFront 반환하는 경우 요청된 객체에 대한 CloudFront 요금이 아닌 사용자 지정 오류 페이지에 대한 표준 요금을 지불합니다. CloudFront 요금에 대한 자세한 내용은 Amazon CloudFront 요금을 참조하십시오.

오류 응답 동작 구성

사용자 지정 오류 응답을 구성하려면 CloudFront 콘솔, CloudFront API 또는 을 사용할 수 AWS CloudFormation 있습니다. 구성 업데이트에 선택한 방법과 관계없이 다음 팁과 권장 사항을 고려하세요.

  • 액세스할 수 있는 위치에 사용자 지정 오류 페이지를 저장합니다 CloudFront. Amazon S3 버킷에 저장하는 것이 좋으며 나머지 웹 사이트 또는 애플리케이션 콘텐츠와 같은 위치에 저장하지 않는 것이 좋습니다. 사용자 지정 오류 페이지를 웹 사이트 또는 애플리케이션과 동일한 오리진에 저장했는데 오리진에서 5xx 오류가 반환되기 시작하면 오리진 서버를 CloudFront 사용할 수 없으므로 사용자 지정 오류 페이지를 가져올 수 없습니다. 자세한 설명은 다른 위치에 객체 및 사용자 지정 오류 페이지 저장 섹션을 참조하세요.

  • 사용자 지정 오류 페이지를 가져올 CloudFront 권한이 있는지 확인하세요. 사용자 지정 오류 페이지가 Amazon S3에 저장되어 있는 경우 페이지에 공개적으로 액세스할 수 있거나 CloudFront 원본 액세스 제어 (OAC) 를 구성해야 합니다. 사용자 지정 오류 페이지가 사용자 지정 오리진에 저장되어 있는 경우 페이지에 공개적으로 액세스할 수 있어야 합니다.

  • (선택 사항) 원하는 경우 사용자 지정 오류 페이지와 함께 Cache-Control 또는 Expires 헤더를 추가하도록 오리진을 구성합니다. 또한 오류 캐싱 최소 TTL 설정을 사용하여 사용자 지정 오류 페이지를 CloudFront 캐시하는 기간을 제어할 수 있습니다. 자세한 설명은 오류를 CloudFront 캐시하는 기간 제어 섹션을 참조하세요.

사용자 지정 오류 응답 구성 (콘솔) CloudFront

CloudFront 콘솔에서 사용자 지정 오류 응답을 구성하려면 CloudFront 배포가 있어야 합니다. 콘솔에서 사용자 지정 오류 응답에 대한 구성 설정은 기존 배포에만 사용할 수 있습니다. 배포를 생성하는 방법에 대한 자세한 내용은 간단한 CloudFront 배포로 시작하기 섹션을 참조하세요.

사용자 지정 오류 응답을 구성하려면(콘솔)
  1. 에 AWS Management Console 로그인하고 CloudFront 콘솔에서 https://console.aws.amazon.com/cloudfront/v4/home#distributions배포 페이지를 여십시오.

  2. 배포 목록에서 업데이트할 배포를 선택합니다.

  3. [오류 페이지(Error Pages)] 탭을 선택한 다음 [사용자 지정 오류 응답 생성(Create Custom Error Response)]을 선택합니다.

  4. 관련 값들을 입력합니다. 자세한 설명은 사용자 지정 오류 페이지 및 오류 캐싱 섹션을 참조하세요.

  5. 원하는 값을 입력한 후 [생성(Create)]을 선택합니다.

사용자 지정 오류 응답 구성 (CloudFrontAPI 또는AWS CloudFormation)

CloudFront API 또는 AWS CloudFormation 를 사용하여 사용자 지정 오류 응답을 구성하려면 배포에서 CustomErrorResponse 유형을 사용하십시오. 자세한 내용은 다음을 참조하세요.

특정 HTTP 상태 코드에 대한 사용자 지정 오류 페이지 만들기

기본 메시지 대신 사용자 지정 오류 메시지를 표시하려는 경우 (예: 웹 사이트의 나머지 부분과 동일한 형식을 사용하는 페이지) 사용자 지정 오류 메시지가 포함된 객체 (예: HTML 파일) 를 뷰어에게 CloudFront 반환하도록 할 수 있습니다.

반환하려는 파일과 해당 파일이 반환되어야 하는 오류를 지정하려면 배포를 업데이트하여 해당 CloudFront 값을 지정합니다. 자세한 설명은 오류 응답 동작 구성 섹션을 참조하세요.

예를 들어 다음은 사용자 지정 오류 페이지입니다.


				AWS 404 페이지

지원되는 HTTP 상태 코드 각각에 서로 다른 객체를 지정하거나 지원되는 상태 코드 전체에 동일한 객체를 사용할 수 있습니다. 일부 상태 코드에 사용자 지정 오류 페이지를 지정하고 다른 상태 코드에는 사용자 지정 오류 페이지를 지정하지 않도록 선택할 수 있습니다.

서비스를 제공하는 객체는 여러 가지 이유로 사용할 CloudFront 수 없을 수 있습니다. 이러한 이유는 넓게 보면 다음 두 가지 범주로 나뉩니다.

  • 클라이언트 오류: 요청에 문제가 있음을 나타냅니다. 지정된 이름의 객체를 사용할 수 없거나, 사용자에게 Amazon S3 버킷의 객체를 가져오기 위해 필요한 권한이 없는 경우를 예로 들 수 있습니다. 클라이언트 오류가 발생하면 오리진은 4xx 범위의 HTTP 상태 코드를 반환합니다. CloudFront

  • 서버 오류: 오리진 서버에 문제가 있음을 나타냅니다. HTTP 서버가 사용 중이거나 사용 불가능한 상태인 경우를 예로 들 수 있습니다. 서버 오류가 발생하면 오리진 서버가 5xx 범위의 HTTP 상태 코드를 반환하거나 CloudFront, 일정 기간 동안 원본 서버로부터 응답을 받지 CloudFront 못하고 504 상태 코드 (게이트웨이 타임아웃) 로 가정합니다.

사용자 지정 오류 페이지를 CloudFront 반환할 수 있는 HTTP 상태 코드에는 다음이 포함됩니다.

  • 400, 403, 404, 405, 414, 416

    참고

    HTTP 상태 코드 416(요청된 범위를 충족할 수 없음)에 대한 사용자 지정 오류 페이지를 만들 수 있으며 오리진에서 CloudFront로 상태 코드 416을 반환할 경우 CloudFront에서 최종 사용자로 반환하는 HTTP 상태 코드를 변경할 수 있습니다. (자세한 내용은 에서 반환한 응답 코드 변경 CloudFront 섹션을 참조하십시오.) 하지만 상태 코드 416 응답은 CloudFront 캐시되지 않으므로 상태 코드 416에 대해 오류 캐싱 최소 TTL 값을 지정하더라도 이 응답은 사용되지 CloudFront 않습니다.

  • 500, 501, 502, 503, 504

    참고

    HTTP 503 상태 코드에 대한 사용자 지정 오류 페이지를 반환하도록 구성해도 CloudFront 반환되지 않는 경우도 있습니다. CloudFront CloudFront 오류 코드가 Capacity Exceeded Limit Exceeded OR인 경우 사용자 지정 오류 페이지를 사용하지 않고 뷰어에게 503 상태 코드를 CloudFront 반환합니다.

오리진의 오류 응답 CloudFront 처리 방법에 대한 자세한 설명은 을 참조하십시오오리진의 HTTP 4xx 및 5xx 상태 코드를 CloudFront 처리하고 캐시하는 방법.

다른 위치에 객체 및 사용자 지정 오류 페이지 저장

객체와 사용자 지정 오류 페이지를 서로 다른 위치에 저장하려는 경우, 배포에는 다음을 충족하는 캐시 동작이 포함되어야 합니다.

  • 경로 패턴의 값이 사용자 지정 오류 메시지와 일치합니다. /4xx-errors라는 이름의 디렉터리에 있는 Amazon S3 버킷에 4xx 오류에 대한 사용자 지정 오류 페이지를 저장한 경우를 예로 들어 보겠습니다. 배포에는 사용자 지정 오류 페이지에 대한 요청을 해당 위치로 라우팅하는 경로 패턴(예: /4xx-errors/*)의 캐시 동작이 포함되어야 합니다.

  • Origin(오리진)의 값은 사용자 지정 오류 페이지를 포함한 오리진에 대한 Origin ID(오리진 ID)의 값을 지정합니다.

자세한 설명은 캐시 동작 설정 섹션을 참조하세요.

에서 반환한 응답 코드 변경 CloudFront

오리진에서 CloudFront 수신한 것과 다른 HTTP 상태 코드를 뷰어에게 CloudFront 반환하도록 구성할 수 있습니다. 예를 들어 오리진에서 500 상태 코드를 반환하는 CloudFront 경우 사용자 지정 오류 페이지와 200 상태 코드 (OK) 를 CloudFront 뷰어에게 반환하는 것이 좋습니다. 오리진이 반환한 상태 코드와 다른 상태 코드를 CloudFront 뷰어에게 반환해야 하는 데에는 여러 가지 이유가 있을 수 있습니다 CloudFront.

  • 일부 인터넷 디바이스(예: 일부 방화벽 및 기업 프록시)에서는 HTTP 4xx 및 5xx 상태 코드를 가로채서 응답이 최종 사용자에게 반환되는 것을 막습니다. 이 시나리오에서 200을 대체하면 응답을 가로채지 않습니다.

  • 다양한 클라이언트 오류나 서버 오류를 구분하지 않으려면 모든 4xx 또는 5xx 상태 코드에 대해 CloudFront 반환되는 값으로 또는 를 지정할 400 수 있습니다. 500

  • 고객이 웹 사이트가 다운된 것을 모르도록 200 상태 코드(OK)와 정적 웹 사이트를 반환하려 할 수 있습니다.

CloudFront 표준 로그를 활성화하고 응답의 HTTP 상태 코드를 CloudFront 변경하도록 구성한 경우 로그의 sc-status 열 값에는 지정한 상태 코드가 포함됩니다. 그러나 x-edge-result-type 열의 값은 영향을 받지 않습니다. 여기에는 오리진 응답의 결과 유형이 포함됩니다. 예를 들어 오리진이 404 (Not Found) 로 돌아올 때 200 뷰어에게 상태 코드를 CloudFront 반환하도록 구성했다고 가정해 CloudFront 보겠습니다. 오리진이 요청에 404 상태 코드로 응답하는 경우 로그의 sc-status 열 값은 200이 되지만 x-edge-result-type 열의 값은 Error가 됩니다.

사용자 지정 오류 페이지와 함께 다음 HTTP 상태 코드 중 하나를 CloudFront 반환하도록 구성할 수 있습니다.

  • 200

  • 400, 403, 404, 405, 414, 416

  • 500, 501, 502, 503, 504

오류를 CloudFront 캐시하는 기간 제어

CloudFront 오류 응답을 기본 기간인 10초 동안 캐시합니다. CloudFront 그런 다음 객체에 대한 다음 요청을 오리진에 제출하여 오류를 일으킨 문제가 해결되고 요청된 객체를 사용할 수 있는지 확인합니다.

캐시하는 각 4xx 및 5xx 상태 코드에 대해 오류 캐싱 기간 (오류 캐싱 최소 TTL) 을 지정할 수 있습니다. CloudFront (자세한 내용은 캐시하는 HTTP 4xx 및 5xx 상태 코드 CloudFront 섹션을 참조하십시오.) 기간을 지정할 때는 다음 사항에 유의하십시오.

  • 오류 캐싱 기간을 짧게 지정하는 경우 더 긴 기간을 지정하는 경우보다 오리진에 더 많은 요청을 전달합니다. CloudFront 5xx 오류의 경우, 이는 원래 오리진에서 오류를 반환하게 만든 문제를 악화시킬 수 있습니다.

  • 오리진에서 객체에 대한 오류를 반환하면 오류 캐싱 기간이 CloudFront 경과할 때까지 오류 응답 또는 사용자 지정 오류 페이지를 통해 객체에 대한 요청에 응답합니다. 오류 캐싱 기간을 길게 지정하면 객체를 다시 사용할 CloudFront 수 있게 된 후에도 오랫동안 오류 응답이나 사용자 지정 오류 페이지로 요청에 계속 응답할 수 있습니다.

참고

HTTP 상태 코드 416(요청된 범위를 충족할 수 없음)에 대한 사용자 지정 오류 페이지를 만들 수 있으며 오리진에서 CloudFront로 상태 코드 416을 반환할 경우 CloudFront에서 최종 사용자로 반환하는 HTTP 상태 코드를 변경할 수 있습니다. (자세한 내용은 에서 반환한 응답 코드 변경 CloudFront 섹션을 참조하십시오.) 하지만 은 상태 코드 416 응답을 캐시하지 CloudFront 않으므로 상태 코드 416에 대해 오류 캐싱 최소 TTL 값을 지정하더라도 이 응답은 사용되지 않습니다. CloudFront

개별 객체의 오류를 CloudFront 캐시하는 기간을 제어하려면 해당 객체의 오류 응답에 해당 헤더를 추가하도록 원본 서버를 구성할 수 있습니다.

오리진에서 Cache-Control: max-age or Cache-Control: s-maxage 지시문 또는 Expires 헤더를 추가하는 경우 헤더의 값이나 오류 CloudFront 캐싱 최소 TTL 중 더 큰 값만큼 오류 응답을 캐시에 저장합니다.

참고

Cache-Control: max-age 값과 Cache-Control: s-maxage 값은 오류 페이지를 가져오는 캐시 동작에 대해 설정된 최대 TTL 값보다 클 수 없습니다.

오리진이 다른 Cache-Control 디렉티브를 추가하거나 헤더를 추가하지 않는 경우 오류 캐싱 최소 TTL 값에 대한 오류 응답을 CloudFront 캐싱합니다.

객체에 대한 4xx 또는 5xx 상태 코드의 만료 시간이 원하는 시간보다 더 긴 경우 객체를 다시 사용할 수 있게 될 때 요청된 객체의 URL을 사용하여 캐싱된 오류 코드를 무효화할 수 있습니다. 오리진에서 여러 객체에 대한 오류 응답을 반환하려는 경우, 각 객체를 개별적으로 무효화해야 할 수 있습니다. 객체 무효화에 대한 자세한 내용은 파일 무효화 단원을 참조하십시오.