웹 사이트 호스팅 사용 설정 - Amazon Simple Storage Service

웹 사이트 호스팅 사용 설정

버킷을 정적 웹 사이트로 구성할 때 정적 웹 사이트 호스팅을 사용 설정하고, 인덱스 문서를 추가하고, 권한을 설정해야 합니다.

Amazon S3 콘솔, REST API, AWS SDK, AWS CLI 또는 AWS CloudFormation을 사용하여 정적 웹 사이트 호스팅을 사용할 수 있습니다.

사용자 지정 도메인으로 웹 사이트를 구성하려면 Route 53에 등록된 사용자 지정 도메인을 사용하여 정적 웹 사이트 구성 섹션을 참조하세요.

정적 웹 사이트 호스팅 사용 설정

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 목록에서 정적 웹 사이트 호스팅을 사용 설정하려는 버킷의 이름을 선택합니다.

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

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

  5. 이 버킷을 사용하여 웹 사이트를 호스팅합니다.를 선택합니다.

  6. 정적 웹 사이트 호스팅에서 사용을 선택합니다.

  7. 인덱스 문서(Index document)에 인덱스 문서 이름을 입력합니다(일반적으로 index.html).

    인덱스 문서 이름은 대소문자를 구분하며 S3 버킷에 업로드하려는 HTML 인덱스 문서의 파일 이름과 정확히 일치해야 합니다. 웹 사이트 호스팅용 버킷을 구성하는 경우 인덱스 문서를 지정해야 합니다. 루트 도메인이나 임의의 하위 폴더로 요청이 전송되면 Amazon S3가 이 인덱스 문서를 반환합니다. 자세한 내용은 인덱스 문서 구성 섹션을 참조하세요.

  8. 4XX 클래스 오류에 대한 사용자 지정 오류 문서를 제공하려면 [오류 문서(Error document)]에 사용자 지정 오류 문서 파일 이름을 입력합니다.

    오류 문서 이름은 대소문자를 구분하며 S3 버킷에 업로드하려는 HTML 오류 문서의 파일 이름과 정확히 일치해야 합니다. 사용자 지정 오류 문서를 지정하지 않았는데 오류가 발생하면 Amazon S3에서 기본 HTML 오류 문서를 반환합니다. 자세한 정보는 사용자 지정 오류 문서 구성을 참조하십시오.

  9. (선택 사항) 고급 리디렉션 규칙을 지정하려면 리디렉션 규칙(Redirection rules)에 JSON을 입력하여 규칙을 설명합니다.

    예를 들어, 요청의 특정 객체 키 이름 또는 접두사에 따라 조건부로 요청을 라우팅할 수 있습니다. 자세한 내용은 고급 조건부 리디렉션을 사용하도록 리디렉션 규칙 구성 섹션을 참조하세요.

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

    Amazon S3는 버킷에 대한 정적 웹 사이트 호스팅을 지원합니다. 페이지 하단의 정적 웹 사이트 호스팅(Static website hosting)에 버킷의 웹 사이트 엔드포인트가 표시됩니다.

  11. 정적 웹 사이트 호스팅에서 엔드포인트를 기록합니다.

    엔드포인트는 버킷의 Amazon S3 웹 사이트 엔드포인트입니다. 버킷을 정적 웹 사이트로 구성한 후 이 엔드포인트를 사용하여 웹 사이트를 테스트할 수 있습니다.

정적 웹 사이트 호스팅을 사용 설정하기 위해 REST 요청을 직접 보내는 방법에 대한 자세한 내용은 Amazon Simple Storage Service API Reference의 다음 섹션을 참조하세요.

Amazon S3에서 정적 웹 사이트를 호스팅하려면 Amazon S3 버킷을 웹 사이트 호스팅용으로 구성한 후 웹 사이트 콘텐츠를 버킷에 업로드합니다. 또한 AWS SDK를 사용하여 프로그래밍 방식으로 웹 사이트 구성을 생성, 업데이트 및 삭제할 수 있습니다. SDK는 Amazon S3 REST API를 둘러싼 래퍼 클래스를 제공합니다. 애플리케이션에서 필요한 경우, 해당 애플리케이션에서 직접 REST API 요청할 수 있습니다.

.NET

다음 예제는 AWS SDK for .NET를 사용하여 버킷에 대한 웹 사이트 구성을 관리하는 방법을 보여줍니다. 버킷에 웹 사이트 구성을 추가하려면 버킷 이름 및 웹 사이트 구성을 제공해야 합니다. 웹 사이트 구성에는 인덱스 문서가 포함되어 있어야 하고 선택적 오류 문서를 포함할 수 있습니다. 이러한 문서는 버킷에 저장되어 있어야 합니다. 자세한 내용은 PUT 버킷 웹 사이트를 참조하십시오. Amazon S3 웹 사이트 기능에 대한 자세한 내용은 Amazon S3를 사용하여 정적 웹 사이트 호스팅를 참조하십시오.

다음 C# 코드로 지정된 버킷에 웹 사이트 구성을 추가하는 예를 살펴봅니다. 이 구성은 인덱스 문서와 오류 문서 이름을 모두 지정합니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예제 실행 섹션을 참조하세요.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class WebsiteConfigTest { private const string bucketName = "*** bucket name ***"; private const string indexDocumentSuffix = "*** index object key ***"; // For example, index.html. private const string errorDocument = "*** error object key ***"; // For example, error.html. // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); AddWebsiteConfigurationAsync(bucketName, indexDocumentSuffix, errorDocument).Wait(); } static async Task AddWebsiteConfigurationAsync(string bucketName, string indexDocumentSuffix, string errorDocument) { try { // 1. Put the website configuration. PutBucketWebsiteRequest putRequest = new PutBucketWebsiteRequest() { BucketName = bucketName, WebsiteConfiguration = new WebsiteConfiguration() { IndexDocumentSuffix = indexDocumentSuffix, ErrorDocument = errorDocument } }; PutBucketWebsiteResponse response = await client.PutBucketWebsiteAsync(putRequest); // 2. Get the website configuration. GetBucketWebsiteRequest getRequest = new GetBucketWebsiteRequest() { BucketName = bucketName }; GetBucketWebsiteResponse getResponse = await client.GetBucketWebsiteAsync(getRequest); Console.WriteLine("Index document: {0}", getResponse.WebsiteConfiguration.IndexDocumentSuffix); Console.WriteLine("Error document: {0}", getResponse.WebsiteConfiguration.ErrorDocument); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }
PHP

다음 PHP로 지정된 버킷에 웹 사이트 구성을 추가하는 예를 살펴봅니다. create_website_config 메서드는 인덱스 문서와 오류 문서 이름을 명시적으로 제공합니다. 또한, 샘플이 웹 사이트 구성을 검색해 응답을 인쇄합니다. Amazon S3 웹 사이트 기능에 대한 자세한 내용은 Amazon S3를 사용하여 정적 웹 사이트 호스팅를 참조하십시오.

실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 AWS SDK for PHP 사용 및 PHP 예제 실행 섹션을 참조하세요.

require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Add the website configuration. $s3->putBucketWebsite([ 'Bucket' => $bucket, 'WebsiteConfiguration' => [ 'IndexDocument' => ['Suffix' => 'index.html'], 'ErrorDocument' => ['Key' => 'error.html'] ] ]); // Retrieve the website configuration. $result = $s3->getBucketWebsite([ 'Bucket' => $bucket ]); echo $result->getPath('IndexDocument/Suffix'); // Delete the website configuration. $s3->deleteBucketWebsite([ 'Bucket' => $bucket ]);

AWS CLI를 사용하여 S3 버킷을 정적 웹 사이트로 구성하는 방법에 대한 자세한 내용은 AWS CLI 명령 참조웹 사이트를 참조하세요.

그런 다음 인덱스 문서를 구성하고 권한을 설정해야 합니다. 자세한 내용은 인덱스 문서 구성웹 사이트 액세스에 대한 권한 설정 섹션을 참조하십시오.

오류 문서, 웹 트래픽 로깅 또는 리디렉션을 선택적으로 구성할 수도 있습니다.