Amazon S3(Simple Storage Service)는 파일을 저장하고 관리하는 서비스로 잘 알려져 있습니다. 하지만 S3는 단순한 파일 저장소 역할을 넘어, 정적 웹 사이트를 호스팅하는 기능도 제공하고 있습니다. 이 글에서는 S3를 사용해 정적 웹 사이트를 생성하고, 이를 인터넷에서 접근 가능하게 만드는 방법을 알아보겠습니다.
우선, AWS 관리 콘솔에서 S3 버킷을 생성합니다. 버킷 이름은 고유해야 하며, 선택한 이름으로 웹 사이트의 URL이 생성되므로 신중히 결정합니다. 또한 버킷을 생성할 AWS 리전도 선택해야 합니다.
S3 버킷을 생성한 후, 해당 버킷의 설정에서 "정적 웹 사이트 호스팅" 옵션을 활성화해야 합니다. 이 옵션을 활성화하면 버킷이 정적 콘텐츠(HTML, CSS, JavaScript 등)를 서빙할 수 있게 됩니다.
정적 웹 사이트 호스팅 활성화: S3 콘솔에서 생성한 버킷을 선택한 후, 속성(Properties) 탭에서 정적 웹 사이트 호스팅 섹션으로 이동합니다. 여기서 "정적 웹 사이트 호스팅"을 활성화하고, 인덱스 문서(예: index.html
)와 오류 문서(예: error.html
)를 설정합니다.
파일 업로드: 웹 사이트에서 사용할 HTML 파일, 이미지 파일, CSS, JavaScript 등을 S3 버킷에 업로드합니다.
정적 웹 사이트 호스팅을 활성화하면, S3는 자동으로 웹 사이트에 접근할 수 있는 URL을 제공합니다. 이 URL은 선택한 리전에 따라 약간의 차이가 있는데, 기본적으로 두 가지 형식 중 하나입니다:
http://버킷이름.s3-website-리전.amazonaws.com
http://버킷이름.s3-website.-리전.amazonaws.com
위 두 URL 형식은 매우 유사하지만, 하나는 -
대시를 사용하고 다른 하나는 .
점을 사용한다는 차이점이 있습니다. 이를 반드시 외울 필요는 없지만, 이러한 차이점이 존재한다는 점을 인지하는 것이 좋습니다.
S3에서 웹 사이트를 호스팅할 때, 웹 사이트를 인터넷에 공개하려면 버킷이 퍼블릭 액세스를 허용해야 합니다. 만약 퍼블릭 액세스를 허용하지 않으면, 사용자가 웹 사이트에 접근할 때 403 Forbidden 오류가 발생할 수 있습니다.
이를 방지하기 위해, 버킷 정책(Bucket Policy) 을 설정하여 버킷의 콘텐츠가 공개적으로 읽힐 수 있도록 해야 합니다. 예를 들어, 다음과 같은 정책을 사용하여 버킷의 모든 객체에 대해 퍼블릭 읽기 권한을 부여할 수 있습니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::버킷이름/*"
}
]
}
이 정책을 적용하면, 해당 버킷의 모든 파일에 대해 누구나 읽기 권한을 가지게 됩니다. 이로 인해 웹 사이트 방문자가 정상적으로 웹 페이지를 볼 수 있게 됩니다.
Amazon S3를 이용한 정적 웹 사이트 호스팅은 매우 간단하면서도 강력한 솔루션입니다. 별도의 서버를 구성할 필요 없이, S3 버킷과 간단한 설정만으로 웹 사이트를 인터넷에 공개할 수 있습니다. 다만, 퍼블릭 액세스 설정과 버킷 정책 관리에는 주의를 기울여야 하며, 보안 설정을 항상 염두에 두어야 합니다.