메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

웹 사이트 호스팅용 버킷 구성

개요

정적 웹 사이트 호스팅용 버킷을 구성하려면 버킷에 웹 사이트 구성을 추가해야 합니다. 구성에 포함되는 사항은 다음과 같습니다.

  • 인덱스 문서

    http://example.com과 같은 URL을 입력하는 경우는 특정 페이지를 요청하는 것이 아닙니다. 이 경우 요청된 웹 사이트 콘텐츠가 저장되는 디렉터리를 보호하기 위해 웹 서버에 기본 페이지가 설정됩니다. 이 기본 페이지를 인덱스 문서라 하고 일반적으로 문서 이름이 index.html로 지정됩니다. 웹 사이트 호스팅용 버킷을 구성하는 경우 인덱스 문서를 지정해야 합니다. 루트 도메인이나 임의의 하위 폴더로 요청이 전송되면 Amazon S3이 이 인덱스 문서를 반환합니다. 자세한 내용은 인덱스 문서 및 폴더을(를) 참조하십시오.

  • 로깅 (선택 사항)

    웹 사이트에 접속하는 방문자들의 수를 추적하려면, 루트 도메인 버킷에 대한 로깅을 활성화해야 합니다. 로깅 활성화는 선택 사항입니다. 자세한 내용은 (선택 사항) 웹 트래픽 로깅 구성를 참조하십시오.

  • 오류 문서

    오류가 발생하는 경우 Amazon S3이 HTML 오류 문서를 반환합니다. 4XX 클래스 오류의 경우 선택 사항으로 커스텀 오류 문서를 제공할 수 있으며, 이 문서를 통해 사용자들에게 추가 지침을 제공할 수 있습니다. 자세한 내용은 사용자 지정 오류 문서 지원을 참조하십시오.

  • 모든 요청에 대한 리디렉션

    루트 도메인이 example.com이고 http://example.comhttp://www.example.com 모두에 대한 요청을 처리하고자 하는 경우, 이름이 example.comwww.example.com으로 지정된 두 개의 버킷을 만들어 버킷 하나에서만(예: example.com) 웹 사이트 콘텐츠를 유지하고 모든 요청을 example.com 버킷으로 리디렉션하도록 다른 버킷을 구성할 수 있습니다.

  • 어드밴스 조건부 리디렉션

    특정 객체 키 이름 또는 요청 접두사에 따라, 또는 응답 코드에 따라 조건부로 요청을 라우팅할 수 있습니다. 예를 들어 버킷 내 객체를 삭제하거나 이름을 변경하는 경우를 가정해봅시다. 요청을 다른 객체에 리디렉션하는 라우팅 규칙을 추가할 수 있습니다. 폴더를 사용할 수 없도록 설정한다고 가정해 보십시오. 라우팅 규칙을 추가하여 다른 페이지에 요청을 리디렉션할 수 있으며, 이를 통해 향후 사용하지 않을 폴더를 설정하는 것입니다. 또한, 라우팅 규칙을 추가함으로써 오류를 반환하는 요청을 오류가 처리되는 다른 도메인으로 라우팅하여 오류 조건을 처리할 수 있습니다.

Amazon S3 콘솔을 사용하여 버킷 웹 사이트 구성을 관리할 수 있습니다. 콘솔의 버킷 [Properties] 탭에서 웹 사이트 구성을 지정할 수 있습니다.

Amazon S3에 정적 웹 사이트를 호스팅할 때에는 인덱스 문서의 이름만 지정하면 됩니다.

웹 사이트 호스팅용 버킷을 구성할 때는 필요에 따라 어드밴스 리디렉션 규칙을 지정할 수 있습니다.

버킷의 웹 사이트 엔드포인트에 대한 모든 요청을 다른 호스트로 리디렉션할 때에는 호스트 이름만 지정하면 됩니다.

규칙 설명 시 XML을 사용합니다. 다음 단원에서는 리디렉션 규칙 지정의 일반적인 구문을 설명하고 그 예를 듭니다.

라우팅 규칙 지정 구문

웹 사이트 구성의 라우팅 규칙을 정의하기 위한 일반 구문은 다음과 같습니다.

Copy
<RoutingRules> = <RoutingRules> <RoutingRule>...</RoutingRule> [<RoutingRule>...</RoutingRule> ...] </RoutingRules> <RoutingRule> = <RoutingRule> [ <Condition>...</Condition> ] <Redirect>...</Redirect> </RoutingRule> <Condition> = <Condition> [ <KeyPrefixEquals>...</KeyPrefixEquals> ] [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ] </Condition> Note: <Condition> must have at least one child element. <Redirect> = <Redirect> [ <HostName>...</HostName> ] [ <Protocol>...</Protocol> ] [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ] [ <ReplaceKeyWith>...</ReplaceKeyWith> ] [ <HttpRedirectCode>...</HttpRedirectCode> ] </Redirect> Note: <Redirect> must have at least one child element. Also, you can have either ReplaceKeyPrefix with or ReplaceKeyWith, but not both.

다음 표에서는 라우팅 규칙 요소를 설명합니다.

이름 설명
RoutingRules

RoutingRule 요소 모음용 컨테이너입니다.

RoutingRule

조건 및 조건이 충족되었을 때 적용되는 리디렉션을 식별하는 규칙입니다.

조건: RoutingRules 컨테이너에 한 개 이상의 라우팅 규칙이 들어 있어야 합니다.

Condition

지정된 리디렉션이 적용되려면 충족되어야 할 조건을 설명하기 위한 컨테이너입니다. 라우팅 규칙이 조건을 포함하지 않는 경우 해당 규칙은 모든 요청에 적용됩니다.

KeyPrefixEquals

리디렉션된 요청을 보내는 객체 키 이름 접두사입니다.

HttpErrorCodeReturnedEquals를 지정하지 않을 경우 KeyPrefixEquals가 필요합니다. KeyPrefixEqualsHttpErrorCodeReturnedEquals가 모두 지정되는 경우 두 항목 모두 true로 설정돼야 조건이 충족됩니다.

HttpErrorCodeReturnedEquals

리디렉션 적용 조건과 일치하는 HTTP 오류 코드입니다. 오류 발생 시 오류 코드가 이 값에 해당하는 경우 지정된 리디렉션이 적용됩니다.

KeyPrefixEquals를 지정하지 않을 경우 HttpErrorCodeReturnedEquals가 필요합니다. KeyPrefixEqualsHttpErrorCodeReturnedEquals가 모두 지정되는 경우 두 항목 모두 true로 설정돼야 조건이 충족됩니다.

Redirect

요청에 대한 리디렉션 지침을 제공하는 컨테이너 요소입니다. 다른 호스트나 다른 페이지로 요청을 리디렉션할 수 있으며, 사용할 다른 프로토콜을 지정할 수 있습니다. RoutingRule에는 Redirect 요소가 있어야 합니다. Redirect 요소는 Protocol, HostName, ReplaceKeyPrefixWith, ReplaceKeyWith 또는 HttpRedirectCode 중 한 개 이상의 형제 요소를 포함해야 합니다.

Protocol

응답에서 반환된 Location 위치 헤더에 사용되는 HTTP 또는 HTTPS 프로토콜입니다.

해당 형제 요소 중 하나가 제공되는 경우 Protocol은 필요하지 않습니다.

HostName

응답에서 반환된 위치 헤더에 사용되는 호스트 이름입니다.

해당 형제 요소 중 하나가 제공되는 경우 HostName은 필요하지 않습니다.

ReplaceKeyPrefixWith

요청 리디렉션의 KeyPrefixEquals 값을 대체하는 객체 키 이름 접두사입니다.

해당 형제 요소 중 하나가 제공되는 경우 ReplaceKeyPrefixWith는 필요하지 않습니다. ReplaceKeyWith가 제공되지 않는 경우에만 제공 가능한 파라미터입니다.

ReplaceKeyWith

응답에서 반환된 위치 헤더에 사용되는 객체 키입니다.

해당 형제 요소 중 하나가 제공되는 경우 ReplaceKeyWith는 필요하지 않습니다. ReplaceKeyPrefixWith가 제공되지 않는 경우에만 제공 가능한 파라미터입니다.

HttpRedirectCode

응답에서 반환된 위치 헤더에 사용되는 HTTP 리디렉션 코드입니다.

해당 형제 요소 중 하나가 제공되는 경우 HttpRedirectCode는 필요하지 않습니다.

다음 예제는 다음과 같은 일반적인 리디렉션 작업을 설명합니다.

예 1: 키 접두사 이름을 바꾼 후 리디렉션

버킷에 다음과 같은 객체가 있었다고 가정해 보십시오.

  • index.html

  • docs/article1.html

  • docs/article2.html

사용자가 docs/에서 documents/로 폴더 이름을 바꾸기로 하였습니다. 이렇게 이름을 변경한 후에는 접두사에 대한 요청을 docs/에서 documents/로 리디렉션해야 합니다. 예를 들어 docs/article1.html에 대한 요청은 documents/article1.html로 리디렉션되어야 합니다.

이 경우 웹 사이트 구성에 다음과 같은 라우팅 규칙이 추가됩니다.

Copy
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

예 2: 삭제된 폴더에 대한 요청을 페이지로 리디렉션

images/ 폴더를 삭제한다고 가정해 보십시오(즉, 키 접두사가 images/인 모든 객체를 삭제). 키 접두사가 images/인 객체에 대한 요청을 이름이 folderdeleted.html인 페이지로 리디렉션하는 라우팅 규칙을 추가할 수 있습니다.

Copy
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>

예 3: HTTP 오류에 대한 리디렉션

요청된 객체를 찾을 수 없는 경우 Amazon EC2 인스턴스로 요청을 리디렉션한다고 가정해 보십시오. HTTP 상태 코드 404 (Not Found)가 반환되는 경우 해당 요청을 처리하는 EC2 인스턴스로 사이트 방문자가 리디렉션되도록 리디렉션 규칙을 추가합니다. 또한, 다음 예제에서는 리디렉션에서 객체 키 접두사 report-404/의 삽입을 설명합니다. 예를 들어 페이지 ExamplePage.html 요청 시 HTTP 404 오류가 반환되는 경우 해당 요청은 지정된 EC2 인스턴스의 페이지 report-404/ExamplePage.html로 리디렉션됩니다. 라우팅 규칙이 하나도 없고 HTTP 오류 404가 발생하는 경우 구성에 지정된 오류 문서가 반환됩니다.

Copy
<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals > </Condition> <Redirect> <HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName> <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

이 페이지에서: