(선택 사항) 웹 페이지 리디렉션 구성 - Amazon Simple Storage Service

(선택 사항) 웹 페이지 리디렉션 구성

웹 사이트 호스팅용으로 Amazon S3 버킷이 구성된 경우 버킷 또는 버킷 내 객체에 대한 리디렉션을 구성할 수 있습니다. 리디렉션 구성에 대해 다음과 같은 옵션이 있습니다.

버킷의 웹 사이트 엔드포인트에 대한 요청을 다른 버킷이나 도메인으로 리디렉션

버킷의 웹 사이트 엔드포인트에 대한 모든 요청을 다른 버킷 또는 도메인으로 리디렉션할 수 있습니다. 모든 요청을 리디렉션하면 웹 사이트 엔드포인트로 전송된 요청이 지정된 버킷 또는 도메인으로 리디렉션됩니다.

예를 들어 루트 도메인이 example.com이고 http://example.comhttp://www.example.com에 대한 요청을 모두 처리할 경우, example.comwww.example.com이라는 이름의 버킷을 2개 만들어야 합니다. 그런 다음 example.com 버킷의 콘텐츠는 유지하고 다른 www.example.com 버킷에서 모든 요청을 example.com 버킷으로 리디렉션하도록 구성합니다. 자세한 내용은 사용자 지정 도메인 이름을 사용하여 정적 웹 사이트 구성을 참조하십시오.

버킷 웹 사이트 엔드포인트에 대한 요청 리디렉션
  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷(Buckets) 아래에서 요청을 리디렉션할 버킷의 이름(예: www.example.com)을 선택합니다.

  3. [속성(Properties)]을 선택합니다.

  4. 정적 웹 사이트 호스팅(Static website hosting)에서 편집(Edit)을 선택합니다.

  5. 객체에 대한 요청 리디렉션(Redirect requests for an object)을 선택합니다.

  6. 호스트 이름(Host name) 상자에 버킷 또는 사용자 지정 도메인의 웹 사이트 엔드포인트를 입력합니다.

    예를 들어, 루트 도메인 주소로 리디렉션하려면 example.com을 입력해야 합니다.

  7. 프로토콜(Protocol)에서는 리디렉션된 요청에 대한 프로토콜(없음, http 또는 https)을 선택합니다.

    프로토콜을 지정하지 않으면 기본 옵션은 없음입니다.

  8. [변경 사항 저장(Save changes)]을 선택합니다.

고급 조건부 리디렉션을 사용하도록 리디렉션 규칙 구성

어드밴스 리디렉션 규칙을 사용하면 특정 객체 키 이름, 요청 접두사 또는 응답 코드에 따라 조건부로 요청을 라우팅할 수 있습니다. 예를 들어, 버킷 내 객체를 삭제하거나 이름을 변경하는 경우를 가정해봅시다. 요청을 다른 객체에 리디렉션하는 라우팅 규칙을 추가할 수 있습니다. 폴더를 사용할 수 없게 하려면 다른 웹 페이지에 요청을 리디렉션하도록 라우팅 규칙을 추가하면 됩니다. 또한 오류를 반환하는 요청을 오류 처리 시 다른 도메인으로 라우팅하여 오류 조건을 처리하도록 라우팅 규칙을 추가할 수도 있습니다.

버킷용 정적 웹 사이트 호스팅을 사용하도록 설정할 때 고급 리디렉션 규칙을 선택적으로 지정할 수 있습니다. Amazon S3에는 웹 사이트 구성당 50개의 라우팅 규칙 제한이 있습니다. 50개 이상의 라우팅 규칙이 필요한 경우 객체 리디렉션을 사용할 수 있습니다. 자세한 내용은 S3 콘솔 사용 섹션을 참조하세요.

REST API를 사용하여 라우팅 규칙을 구성하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service API 참조PutBucketWebsite를 참조하십시오.

중요

새 Amazon S3 콘솔에서 리디렉션 규칙을 생성하려면 JSON을 사용해야 합니다. JSON 예제는 리디렉션 규칙 예제 섹션을 참조하세요.

정적 웹 사이트에 대한 리디렉션 규칙 구성

정적 웹 사이트 호스팅이 이미 사용 설정되어 있는 버킷에 대한 리디렉션 규칙을 추가하려면 다음 단계를 따르십시오.

  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 목록에서 정적 웹 사이트로 구성한 버킷의 이름을 선택합니다.

  3. [속성(Properties)]을 선택합니다.

  4. 정적 웹 사이트 호스팅(Static website hosting)에서 편집(Edit)을 선택합니다.

  5. 리디렉션 규칙(Redirection rules) 상자에서 JSON에 리디렉션 규칙을 입력합니다.

    S3 콘솔에서는 JSON을 사용하여 규칙을 설명합니다. JSON 예제는 리디렉션 규칙 예제 섹션을 참조하세요. Amazon S3에는 웹 사이트 구성당 50개의 라우팅 규칙 제한이 있습니다.

  6. [변경 사항 저장(Save changes)]을 선택합니다.

라우팅 규칙 요소

다음은 JSON 및 XML의 웹 사이트 구성에서 라우팅 규칙을 정의하기 위한 일반 구문입니다. 새 S3 콘솔에서 리디렉션 규칙을 구성하려면 JSON을 사용해야 합니다. JSON 예제는 리디렉션 규칙 예제 섹션을 참조하십시오.

JSON
[ { "Condition": { "HttpErrorCodeReturnedEquals": "string", "KeyPrefixEquals": "string" }, "Redirect": { "HostName": "string", "HttpRedirectCode": "string", "Protocol": "http"|"https", "ReplaceKeyPrefixWith": "string", "ReplaceKeyWith": "string" } } ] Note: Redirect must each have at least one child element. You can have either ReplaceKeyPrefix with or ReplaceKeyWith but not both.
XML
<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. You can have either ReplaceKeyPrefix with or ReplaceKeyWith but not both.

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

이름 설명
RoutingRules RoutingRule 요소 모음용 컨테이너입니다.
RoutingRule

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

조건:

  • RoutingRules 컨테이너에는 적어도 1개 이상의 라우팅 규칙이 포함되어 있어야 합니다.

Condition

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

KeyPrefixEquals

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

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

HttpErrorCodeReturnedEquals

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

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

Redirect

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

Protocol

응답에서 반환된 http 헤더에 사용할 https 또는 Location 프로토콜입니다.

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

HostName

응답에서 반환된 Location 헤더에 사용할 호스트 이름입니다.

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

ReplaceKeyPrefixWith

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

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

ReplaceKeyWith

응답에서 반환된 Location 헤더에 사용할 객체 키입니다.

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

HttpRedirectCode

응답에서 반환된 Location 헤더에 사용할 HTTP 리디렉션 코드입니다.

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

리디렉션 규칙 예제

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

중요

새 Amazon S3 콘솔에서 리디렉션 규칙을 생성하려면 JSON을 사용해야 합니다.

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

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

  • index.html

  • docs/article1.html

  • docs/article2.html

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

이 경우 웹 사이트 구성에 다음 라우팅 규칙을 추가합니다.

JSON
[ { "Condition": { "KeyPrefixEquals": "docs/" }, "Redirect": { "ReplaceKeyPrefixWith": "documents/" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>
예 2: 삭제된 폴더에 대한 요청을 페이지로 리디렉션

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

JSON
[ { "Condition": { "KeyPrefixEquals": "images/" }, "Redirect": { "ReplaceKeyWith": "folderdeleted.html" } } ]
XML
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>
예 3: HTTP 오류에 대한 리디렉션

요청된 객체를 찾을 수 없는 경우 요청을 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스로 리디렉션하려고 한다고 가정합니다. HTTP 상태 코드 404(찾을 수 없음)가 반환되는 경우 해당 요청을 처리하는 Amazon EC2 인스턴스로 사이트 방문자가 리디렉션되도록 리디렉션 규칙을 추가합니다.

또한, 다음 예제에서는 리디렉션에서 객체 키 접두사 report-404/의 삽입을 설명합니다. 예를 들어, ExamplePage.html 페이지를 요청했지만 HTTP 404 오류가 반환되는 경우, 해당 요청은 지정된 Amazon EC2 인스턴스의 report-404/ExamplePage.html 페이지로 리디렉션됩니다. 라우팅 규칙이 하나도 없고 HTTP 오류 404가 발생하는 경우, 구성에 지정된 오류 문서가 반환됩니다.

JSON
[ { "Condition": { "HttpErrorCodeReturnedEquals": "404" }, "Redirect": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ]
XML
<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>

객체에 대한 요청 리디렉션

객체의 메타데이터에 웹 사이트 리디렉션 위치를 설정하여 객체에 대한 요청을 다른 객체 또는 URL로 리디렉션할 수 있습니다. 객체 메타데이터에 x-amz-website-redirect-location 속성을 추가하여 리디렉션을 설정할 수 있습니다. Amazon S3 콘솔에서 객체의 메타데이터에 웹 사이트 리디렉션 위치를 설정합니다. Amazon S3 API를 사용하는 경우 x-amz-website-redirect-location을 설정합니다. 이 경우 웹 사이트가 해당 객체를 301 리디렉션으로 해석합니다.

다른 객체로 요청을 리디렉션하려면 대상 객체의 키에 이르도록 리디렉션 위치를 설정합니다. 외부 URL로 요청을 리디렉션하려면 리디렉션 위치를 원하는 URL로 설정합니다. 객체 메타데이터에 대한 자세한 정보는 시스템 정의 객체 메타데이터 섹션을 참조하십시오.

페이지 리디렉션을 설정하는 경우 원본 객체 콘텐츠를 유지하거나 삭제할 수 있습니다. 예를 들어 버킷에 page1.html 객체가 있는 경우 이 페이지에 대한 모든 요청을 다른 객체 page2.html로 리디렉션할 수 있습니다. 여기에는 두 가지 옵션이 있습니다.

  • page1.html 객체의 내용을 유지하고 페이지 요청을 리디렉션합니다.

  • page1.html의 내용을 삭제하고 page1.html라는 0바이트 객체를 업로드하여 기존 객체를 대체하고 페이지 요청을 리디렉션합니다.

  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷(Buckets) 목록에서 정적 웹 사이트로 구성한 버킷의 이름(예: example.com)을 선택합니다.

  3. 객체(Objects)에서 객체를 선택합니다.

  4. 작업(Actions)을 선택하고 메타데이터 편집(Edit metadata)을 선택합니다.

  5. 메타데이터를 선택합니다.

  6. 메타데이터 추가(Add Metadata)를 선택합니다.

  7. 유형(Type)에서 시스템 정의(System Defined)를 선택합니다.

  8. 키(Key)에서 x-amz-website-redirect-location을 선택합니다.

  9. 에 리디렉션할 객체의 키 이름(예: /page2.html)을 입력합니다.

    같은 버킷에 있는 다른 객체의 경우 값의 / 접두사가 필요합니다. 또한 이 값을 외부 URL에 설정할 수 있습니다(예: http://www.example.com).

  10. 메타데이터 편집(Edit metadata)을 선택합니다.

다음 Amazon S3 API 작업은 요청의 x-amz-website-redirect-location 헤더를 지원합니다. Amazon S3은 객체 메타데이터의 헤더 값을 x-amz-website-redirect-location으로 저장합니다.

웹 사이트 호스팅용으로 구성된 버킷은 웹 사이트 엔드포인트와 REST 엔드포인트를 모두 포함합니다. 301 리디렉션으로 구성된 페이지에 대한 요청은 요청의 엔드포인트에 따라 요청 결과가 다음과 같을 수 있습니다.

  • 리전별 웹 사이트 엔드포인트 - Amazon S3이 x-amz-website-redirect-location 속성 값에 따라 페이지 요청을 리디렉션합니다.

  • REST 엔드포인트 - Amazon S3이 페이지 요청을 리디렉션하지 않습니다. 이 경우 요청된 객체가 반환됩니다.

엔드포인트에 대한 자세한 내용은 웹 사이트 엔드포인트와 REST API 엔드포인트 간의 주요 차이점 섹션을 참조하십시오.

페이지 리디렉션을 설정하는 경우 객체 콘텐츠를 유지하거나 삭제할 수 있습니다. 예를 들면, 버킷에 page1.html 객체가 있다고 가정해 보십시오.

  • page1.html의 콘텐츠를 유지하고 페이지 요청만 리디렉션하려는 경우 PUT Object - Copy 요청을 제출하면 기존 page1.html 객체를 원본으로 사용하는 새 page1.html 객체를 생성할 수 있습니다. 해당 요청에는 x-amz-website-redirect-location 헤더를 설정합니다. 요청이 완료되면 콘텐츠가 변경되지 않은 원래 페이지가 생기지만 사용자가 지정한 리디렉션 위치로 Amazon S3이 해당 페이지에 대한 모든 요청을 리디렉션합니다.

  • page1.html 객체의 콘텐츠를 삭제하고 해당 페이지에 대한 요청을 리디렉션하려는 경우 PUT Object 요청을 보내면 객체 키가 같은 0바이트 객체인 page1.html을 업로드할 수 있습니다. PUT 요청에서 새 객체에 x-amz-website-redirect-locationpage1.html을 설정합니다. 요청이 완료되면 page1.html은 콘텐츠가 없어지고 x-amz-website-redirect-location에 따라 지정된 위치로 요청이 리디렉션됩니다.

GET Object 작업을 사용하여 다른 객체 메타데이터와 함께 객체를 검색하는 경우 Amazon S3이 해당 응답의 x-amz-website-redirect-location 헤더를 반환합니다.