웹사이트 호스팅 활성화

웹사이트 호스팅 활성화

버킷을 정적 웹사이트로 구성하려면 정적 웹사이트 호스팅을 활성화하고, 인덱스 문서를 구성하며, 권한을 설정해야 해요.

출처: 문서

본문

정적 웹사이트 호스팅은 Amazon S3 콘솔, REST API, AWS SDK, AWS CLI 또는 CloudFormation으로 활성화할 수 있어요.

사용자 지정 도메인으로 웹사이트를 구성하려면 튜토리얼: Route 53에 등록된 사용자 지정 도메인으로 정적 웹사이트 구성을 참고하세요.

정적 웹사이트 호스팅을 활성화하는 방법은 다음과 같아요.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
  2. 왼쪽 탐색 창에서 General purpose buckets를 선택해요.
  3. 버킷 목록에서 정적 웹사이트 호스팅을 활성화할 버킷의 이름을 선택해요.
  4. Properties를 선택해요.
  5. Static website hosting 아래에서 Edit를 선택해요.
  6. Use this bucket to host a website를 선택해요.
  7. Static website hosting 아래에서 Enable을 선택해요.
  8. Index document에 인덱스 문서의 파일 이름(일반적으로 index.html)을 입력해요. 인덱스 문서 이름은 대소문자를 구분하며, S3 버킷에 업로드할 HTML 인덱스 문서의 파일 이름과 정확히 일치해야 해요. 버킷을 웹사이트 호스팅용으로 구성할 때 인덱스 문서를 지정해야 해요. 루트 도메인이나 하위 폴더에 요청이 들어오면 Amazon S3는 이 인덱스 문서를 반환해요. 자세한 내용은 인덱스 문서 구성을 참고하세요.
  9. 4XX 클래스 오류에 자신의 사용자 지정 오류 문서를 제공하려면 Error document에 사용자 지정 오류 문서 파일 이름을 입력해요. 오류 문서 이름은 대소문자를 구분하며, S3 버킷에 업로드할 HTML 오류 문서의 파일 이름과 정확히 일치해야 해요. 사용자 지정 오류 문서를 지정하지 않고 오류가 발생하면 Amazon S3는 기본 HTML 오류 문서를 반환해요. 자세한 내용은 사용자 지정 오류 문서 구성을 참고하세요.
  10. (선택 사항) 고급 리디렉션 규칙을 지정하려면 Redirection rules에 규칙을 설명하는 JSON을 입력해요. 예를 들어 요청의 특정 객체 키 이름이나 접두사에 따라 요청을 조건부로 라우팅할 수 있어요. 자세한 내용은 고급 조건부 리디렉션을 사용하도록 리디렉션 규칙 구성을 참고하세요.
  11. Save changes를 선택해요. Amazon S3가 버킷에 정적 웹사이트 호스팅을 활성화해요. 페이지 아래 Static website hosting에서 버킷의 웹사이트 엔드포인트를 볼 수 있어요.
  12. Static website hosting 아래에서 Endpoint를 확인해요. Endpoint는 버킷의 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 Bucket website를 참고하세요. Amazon S3 웹사이트 기능에 대한 자세한 내용은 Amazon S3로 정적 웹사이트 호스팅을 참고하세요. 다음 C# 코드 예시는 지정된 버킷에 웹사이트 구성을 추가해요. 이 구성은 인덱스 문서와 오류 문서 이름을 모두 지정해요. 코드 예시 설정과 실행에 대한 자세한 내용은 AWS SDK for .NET Developer Guide의 AWS SDK for .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);
            }
            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 API에 대한 자세한 내용은 AWS SDK for PHP - Version 3을 참고하세요.

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 Command Reference의 website를 참고하세요.

다음으로 인덱스 문서를 구성하고 권한을 설정해야 해요. 자세한 내용은 인덱스 문서 구성과 웹사이트 접근 권한 설정을 참고하세요.

선택적으로 오류 문서, 웹 트래픽 로깅, 리디렉션도 구성할 수 있어요.

더 알아보기 (Learn more)