개발자가 부서의 정적 웹사이트를 만듭니다. 개발자는 웹사이트의 정적 자산을 Amazon S3 버킷에 배포하고 Amazon CloudFront를 사용하여 자산을 제공합니다. 개발자는 CloudFront 배포에서 OAC(Origin Access Control)를 사용하여 S3 버킷에 액세스합니다. 개발자는 사용자가 루트 URL과 특정 페이지에 액세스할 수 있지만 파일 이름을 지정하지 않고 디렉토리에 액세스할 수 없음을 알아차렸습니다. 예를 들어 /products/index.html는 작동하지만 /products/는 오류를 반환합니다. 개발자는 S3 버킷을 공개적으로 노출하지 않고 파일 이름을 지정하지 않고 디렉토리에 액세스할 수 있도록 활성화해야 합니다. 이 요구 사항을 충족하는 솔루션은 무엇입니까?
- A. CloudFront 배포의 설정을 업데이트하여 기본 루트 객체가 index.html로 설정되어 있는지 확인합니다.
- B. Amazon S3 버킷 설정을 업데이트하고 정적 웹사이트 호스팅을 활성화합니다. 인덱스 문서로 index.html을 지정합니다. S3 버킷 정책을 업데이트하여 액세스를 활성화합니다. CloudFront 배포의 원본을 S3 웹사이트 엔드포인트를 사용하도록 업데이트합니다.
- C. 요청 URL을 검사하고 디렉토리에 액세스하는 경우 index.html을 추가하는 CloudFront 함수를 만듭니다. CloudFront 배포의 비헤이비어에 뷰어 요청 CloudFront 함수로 함수를 추가합니다.✓ 정답
- D. CloudFront 배포에서 사용자 정의 오류 응답을 만듭니다. HTTP 오류 코드를 HTTP 404 Not Found 응답 코드로 설정하고 응답 페이지 경로를 /index.html로 설정합니다. HTTP 응답 코드를 HTTP 200 OK 응답 코드로 설정합니다.
해설
【핵심 용어】 • CloudFront Functions: 뷰어 요청/응답에서 초경량 JS 실행 가능 • 디렉토리 요청에 index.html 추가하는 URL 재작성 흔한 패턴 • OAC를 유지한 채 S3 정적 호스팅 엔드포인트 사용 X 【정답 포인트】 정답: C (CloudFront Function이 viewer request에서 URL 재작성, index.html 추가) OAC + S3 REST 엔드포인트 유지하면서 디렉토리 접근 패턴 지원. 버킷 비공개 유지. 【오답 체크】 • A: 기본 루트 객체는 루트(/)에만 적용, 하위 경로 적용 안 됨 • B: S3 정적 호스팅 엔드포인트는 OAC와 호환 안 됨(공개 버킷 필요) • D: 404→/index.html 매핑은 SPA 라우팅용, 디렉토리 인덱스가 아님