이전 포스트에서는 구입한 도메인을 AWS Route 53을 이용해 연결하는 방법을 배웠다.
이번에서는 AWS S3 (Simple Storage Service)를 이용해 웹 호스팅 서비스를 설정하는 방법에 대해 알아보겠다.
1단계: AWS Management Console 접속
AWS 홈페이지에서 계정에 로그인한 후 AWS Management Console에 접속한다. AWS 서비스들이 나열된 목록에서 “S3”을 찾아 클릭한다.
2단계: 버킷 생성
S3 대시보드의 “버킷 생성”에서 “버킷 만들기” 버튼을 클릭한다. 버킷은 AWS에서 데이터를 저장하는 기본 컨테이너이다. 버킷 이름을 사용하고 싶은 이름으로 입력하고, 웹사이트의 트래픽이 가장 많을 것으로 예상되는 지역을 선택하고 이 버킷의 퍼블릭 액세스 차단 설정에서 모든 퍼블릭 액세스 차단은 “활성화”, 나머지는 기본 설정으로 버킷을 생성한다.
버킷을 생성할 때 옵션에 대한 설명 1. 객체 소유권(Object Ownership): AWS S3에서 파일을 업로드하면, 그 파일은 '객체'라는 단위로 저장된다. 객체 소유권은 이러한 객체에 대한 소유권을 정의한다. 일반적으로 객체는 해당 객체를 처음 업로드한 계정이 소유하게 되지만, 이 설정을 변경하여 버킷 소유자가 모든 객체의 소유권을 갖도록 설정할 수 있다. 2. 퍼블릭 액세스 차단설정(Block public access): 이 설정은 버킷의 모든 객체에 대한 공개 액세스를 차단할지 여부를 설정한다. 이를 활성화하면, 버킷 내 모든 객체는 인터넷에서 접근할 수 없게 된다. 이 설정은 민감한 정보를 보호하는데 중요하다. 3. 버킷 버전 관리(Bucket Versioning): 버킷 버전 관리를 활성화하면, 객체의 모든 버전이 S3에 저장된다. 이는 객체를 실수로 삭제하거나 덮어쓸 경우 이전 버전을 복원하는 데 유용한다. 4. 태그(Tagging): 태그는 버킷에 메타데이터를 추가하는데 사용된다. 예를 들어, 특정 프로젝트에 대한 비용을 추적하거나, 컴플라이언스 요구사항을 충족하기 위해 버킷을 분류하는데 태그를 사용할 수 있다. 5. 기본 암호화(Default encryption): 기본 암호화를 설정하면, 모든 새로운 객체는 자동으로 선택한 암호화 방법으로 암호화된다. 이를 통해 데이터 보안을 강화할 수 있다. 6. 객체 잠금(Object Lock): 객체 잠금을 활성화하면, 객체를 삭제하거나 덮어쓰는 것을 방지하여 데이터를 보호할 수 있다. 이 설정은 장기간에 걸친 데이터 보존이 필요할 때 유용하다.
3단계: 웹사이트 호스팅 활성화
새로 생성한 버킷을 선택한 후, “속성” 탭으로 이동한다. 여기에서 “정적 웹사이트 호스팅”을 찾아 “편집”을 클릭한다. 그런 다음 “정적 웹사이트 호스팅” – “활성화” 옵션을 선택하고, 웹사이트의 시작 페이지와 오류 페이지를 입력한다. 시작 페이지는 입력해야 하고 일반적으로 ‘index.html’을 사용한다. 오류 페이지는 필수는 아니다.
4단계: 버킷 정책 설정
버킷의 “권한” 탭으로 이동하여 “버킷 정책”를 클릭한다. 이 부분에서는 버킷에 대한 접근 권한을 설정한다. 웹사이트가 공개적으로 접근 가능하도록 설정하려면, 다음과 같은 정책을 입력할 수 있다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}
위 코드에서 BUCKETNAME 부분을 본인이 생성한 버킷 이름으로 바꾸면 된다.
혹시 위와 같이 “버킷 정책 변경 사항을 저장할 수 없습니다.”라고 뜬다면,
버킷>권한>퍼블릭 액세스 차단(버킷 설정)에서 차단을 해제하고 다시 버킷 정책을 설정하면 된다.
버킷 정책이 설정되면 다시 퍼블릭 액세스 차단(버킷 설정)을 설정한다.
이제 AWS S3를 이용하여 웹 호스팅 서비스를 설정하였다. 퍼블릭 액세스를 차단하였으므로 S3로의 직접 접속은 불가 하지만 앞으로 CloudFront와 Route 53을 통해 도메인으로 접근이 가능하도록 다음에 설정 할 예정이다.