기본 루트 객체 지정 - 아마존 CloudFront

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

기본 루트 객체 지정

사용자가 배포의 객체를 요청하는 대신 배포용 루트 URL을 요청할 때 특정 객체 (기본 루트 객체) 를 CloudFront 반환하도록 구성할 수 있습니다. 기본 루트 객체를 지정하면 배포 콘텐츠가 노출되지 않게 할 수 있습니다.

기본 루트 객체를 지정하는 방법

배포의 콘텐츠가 노출되는 것을 방지하거나 오류가 반환되는 것을 방지하려면 다음 단계를 수행하여 배포에 대한 기본 루트 객체를 지정합니다.

배포에 대한 기본 루트 객체를 지정하려면
  1. 배포에서 가리키는 오리진에 기본 루트 객체를 업로드합니다.

    이 파일은 CloudFront에서 지원되는 모든 형식이 될 수 있습니다. 파일 이름에 대한 제약 조건 목록은 의 DefaultRootObject 요소 설명을 참조하십시오 DistributionConfig.

    참고

    기본 루트 개체의 파일 이름이 너무 길거나 잘못된 문자가 포함된 경우 오류가 CloudFront HTTP 400 Bad Request - InvalidDefaultRootObject 반환됩니다. 또한 코드를 10초 (기본값) 동안 CloudFront 캐시하고 결과를 액세스 로그에 기록합니다.

  2. 객체에 대한 권한이 CloudFront 최소한 read 액세스를 허용하는지 확인하십시오.

    Amazon S3 권한에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3의 Identity and Access Management를 참조하세요.

  3. CloudFront 콘솔 또는 CloudFront API를 사용하여 기본 루트 객체를 참조하도록 배포를 업데이트하십시오.

    CloudFront 콘솔을 사용하여 기본 루트 객체를 지정하려면:

    1. 에서 AWS Management Console 로그인하고 CloudFront 콘솔을 엽니다https://console.aws.amazon.com/cloudfront/v4/home.

    2. 상단 창의 배포 목록에서 업데이트하려는 배포를 선택합니다.

    3. 설정 창의 일반 탭에서 편집을 선택하세요.

    4. 편집 설정 대화 상자에서 기본 루트 객체 필드에 기본 루트 객체의 파일 이름을 입력합니다.

      index.html과 같이 객체 이름만 입력하세요. 객체 이름 앞에 /를 추가하지 마십시오.

    5. 변경 사항 저장을 선택합니다.

    CloudFront API를 사용하여 구성을 업데이트하려면 배포의 DefaultRootObject 요소 값을 지정합니다. CloudFront API를 사용하여 기본 루트 객체를 지정하는 방법에 대한 자세한 내용은 Amazon CloudFront API 참조를 참조하십시오 UpdateDistribution.

  4. 루트 URL을 요청하여 기본 루트 객체를 활성화했는지 확인합니다. 브라우저에 기본 루트 객체가 표시되지 않는 경우 다음 단계를 수행합니다.

    1. CloudFront 콘솔에서 배포 상태를 확인하여 배포가 완전히 배포되었는지 확인하십시오.

    2. 2단계와 3단계를 반복하여 올바른 권한을 부여하고 기본 루트 객체를 지정하는 배포 구성을 올바르게 업데이트했는지 확인합니다.

기본 루트 객체 작동 방식

예를 들어 다음 요청은 image.jpg 객체를 가리킵니다.

https://d111111abcdef8.cloudfront.net/image.jpg

반면에, 다음 요청은 특정 객체 대신에 앞 예제와 동일한 배포의 루트 URL을 가리킵니다.

https://d111111abcdef8.cloudfront.net/

기본 루트 객체를 정의한 경우 배포의 루트를 호출하는 최종 사용자 요청은 기본 루트 객체를 반환합니다. 예를 들어, index.html 파일을 기본 루트 객체로 지정하는 경우, 그에 대한 요청은 다음과 같습니다.

https://d111111abcdef8.cloudfront.net/

반환 형식:

https://d111111abcdef8.cloudfront.net/index.html

참고

CloudFront 후행 슬래시 (https://d111111abcdef8.cloudfront.net///) 가 여러 개 있는 URL이 다음과 같은지 여부는 결정하지 않습니다. https://d111111abcdef8.cloudfront.net/ 오리진 서버가 이러한 비교를 수행합니다.

기본 루트 객체를 정의한 경우 배포의 하위 디렉터리에 대한 최종 사용자 요청은 기본 루트 객체를 반환하지 않습니다. 예를 들어 가 기본 루트 index.html 객체이고 이 객체가 배포 중인 디렉터리에 대한 최종 사용자 요청을 CloudFront 받는다고 가정해 보겠습니다. install CloudFront

https://d111111abcdef8.cloudfront.net/install/

CloudFront 의 복사본이 디렉터리에 index.html 나타나더라도 기본 루트 객체를 반환하지 않습니다. install

CloudFront 지원하는 모든 HTTP 메서드를 허용하도록 배포를 구성하면 기본 루트 객체가 모든 메서드에 적용됩니다. 예를 들어, 기본 루트 객체가 index.php 이고 도메인의 루트 (https://example.com) 에 POST 요청을 제출하도록 애플리케이션을 작성하면 https://example.com/index.php 으로 요청을 CloudFront 보냅니다.

CloudFront 기본 루트 객체의 동작은 Amazon S3 인덱스 문서의 동작과 다릅니다. Amazon S3 버킷을 웹 사이트로 구성하고 인덱스 문서를 지정한 경우, 사용자가 버킷의 하위 디렉터리를 요청하더라도 Amazon S3에서는 인덱스 문서를 반환합니다. (인덱스 문서의 사본은 모든 하위 디렉터리에 나타나야 합니다.) Amazon S3 버킷을 웹 사이트로 구성하는 방법과 인덱스 문서에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3에서 웹 사이트 호스팅 단원을 참조하세요.

중요

기본 루트 객체는 CloudFront 배포에만 적용된다는 점을 기억하십시오. 이 경우에도 오리진의 보안은 관리해야 합니다. 예를 들어, Amazon S3 오리진을 사용하는 경우, Amazon S3 버킷 ACL을 적절히 설정하여 버킷에 대해 원하는 액세스 수준을 보장해야 합니다.

루트 객체를 정의하지 않으면 어떻게 CloudFront 작동합니까?

기본 루트 객체를 정의하지 않은 경우, 배포의 루트에 대한 요청은 오리진 서버로 전달됩니다. Amazon S3 오리진을 사용하는 경우 다음 중 하나가 반환될 수 있습니다.

  • Amazon S3 버킷의 콘텐츠 목록 — 다음 조건 중 하나에서 CloudFront 배포에 액세스하는 사용자는 누구나 오리진의 콘텐츠를 볼 수 있습니다.

    • 버킷이 적절하게 구성되지 않았습니다.

    • 배포에 연결된 버킷과 이 버킷에 있는 객체에 대한 Amazon S3 권한은 모두에 대한 액세스 권한을 부여합니다.

    • 최종 사용자가 오리진 루트 URL을 사용하여 오리진에 액세스합니다.

  • 오리진의 프라이빗 콘텐츠 목록 — 오리진을 프라이빗 배포로 구성하면 (사용자만 액세스 가능), 배포에 액세스할 수 있는 자격 증명을 가진 사람은 누구나 배포와 관련된 Amazon S3 버킷의 콘텐츠를 볼 수 CloudFront 있습니다. CloudFront 이러한 경우 사용자는 오리진 루트 URL을 통해 콘텐츠에 액세스할 수 없습니다. 비공개 콘텐츠를 배포하는 방법에 대한 자세한 내용은 서명된 URL과 서명된 쿠키를 사용하여 프라이빗 콘텐츠 제공를 참조하십시오.

  • Error 403 Forbidden— 배포와 관련된 Amazon S3 버킷의 권한 또는 해당 버킷의 객체에 대한 권한이 모든 사람에 대한 액세스를 거부하는 CloudFront 경우 이 오류를 CloudFront 반환합니다.