min8282

[AWS] S3를 이용한 정적 웹사이트 호스팅 및 버전 관리 본문

Security/Cloud

[AWS] S3를 이용한 정적 웹사이트 호스팅 및 버전 관리

min8282 2025. 2. 28. 12:06

Amazon S3를 이용한 정적 웹사이트 호스팅 및 버전 관리에 대해서 작성해 보겠습니다.

1. S3 버킷 생성

 

S3 콘솔에 접속하여 새로운 버킷을 생성합니다. 버킷 이름은 유니크해야 하므로 고유한 이름을 입력합니다. 나머지 설정은 기본값(Default)으로 둔 채 버킷을 생성합니다.


2. 정적 웹사이트 파일 업로드

생성한 버킷으로 이동하여 index.html 파일을 업로드합니다.

 

index.html이 업로드된 것을 확인합니다.


3. 정적 웹사이트 호스팅 활성

버킷의 "속성" 탭으로 이동합니다.

"정적 웹 사이트 호스팅" 설정이 비활성화되어 있는 것을 확인합니다.

"편집" 버튼을 눌러 설정을 변경합니다

정적 웹 사이트 호스팅을 활성화하고, 인덱스 문서(Index Document) 항목에 index.html을 입력합니다.

설정을 저장하면 버킷 웹사이트 엔드포인트(Bucket Website Endpoint) URL이 생성됩니다.

생성된 URL에 접속하여 사이트가 정상적으로 로드되는지 확인합니다. 현재는 403 Forbidden 오류가 발생합니다.


4. 접근 권한 설정 (403 Forbidden 오류 해결)

버킷의 "권한"(Permissions) 탭으로 이동합니다.

 

버킷 정책을 편집해야 하는데 퍼블릭 액세스 차단 설정이 활성화되어 있습니다. 먼저 퍼블릭 액세스 차단 설정을 비활성화해야 합니다.

 

"편집(Edit)" 버튼 클릭

 

"퍼블릭 액세스 차단" 옵션을 비활성화  변경 사항 저장(Save)

버킷 정책(Bucket Policy) 설정

  • "버킷 정책 편집"을 클릭합니다.
  • 정책 생성기(Policy Generator) 도구를 사용하여 정책을 생성합니다.

  • 정책 타입(Type): S3 Bucket Policy
  • Principal(프린시폴): * (모든 사용자 허용)
  • Actions(액션): s3:GetObject
  • Resource(ARN): 해당 버킷의 ARN 값 (arn:aws:s3:::버킷이름/*)

생성된 JSON 정책을 복사하여 버킷 정책에 붙여 넣고 저장합니다.

 

복사한 정책을 붙여 넣고 변경 사항 저장합니다. 이때 정책 부분에 resource에 마지막 /*을 추가해야 합니다.

 

변경 사항을 저장한 후 다시 버킷 웹사이트 엔드포인트 URL에 접속합니다.

 

이제 생성된 버킷 웹사이트 엔드포인트 URL에 접속하면 정상적으로 index.html이 로드되는 것을 확인할 수 있습니다.


5. 버킷 버전 관리 활성화

버전 관리를 활성화하면 S3에서 동일한 파일의 여러 버전을 저장할 수 있어 실수로 삭제한 경우 복원이 가능합니다.

버킷의 "속성"(Properties) 탭으로 이동합니다. 버킷 버전 관리(Versioning) 설정이 비활성화되어 있는 것을 확인합니다.

"편집"(Edit) 버튼을 클릭하여 버전 관리 활성화 옵션을 선택합니다.

설정을 저장하면 버킷 버전 관리가 활성화됩니다.


6. 버전 관리 활용 (파일 복원)

이제 버전 관리 기능을 활용하여 삭제된 파일을 복구하는 방법을 진행합니다.

6.1 파일 삭제 및 확인

"개체"(Objects) 탭으로 이동하여 index.html 파일을 삭제합니다.

삭제"를 입력하고 객체 삭제를 클릭합니다.

삭제 후 버킷 웹사이트 엔드포인트 URL로 접속합니다.

이번에는 404 Not Found 오류가 발생하는 것을 확인할 수 있습니다.


6.2. 파일 복원

다시 개체 탭으로 이동해서 버전 표시 옵션을 확인합니다.

"버전 표시"(Show versions) 옵션을 활성화합니다.

 

삭제 마커를 선택한 후 삭제 버튼을 클릭합니다.

 

삭제하려는 지정된 객체를 한 번 더 확인 후, "영구 삭제"를 입력하고 삭제를 완료합니다.

다시 버킷 웹사이트 엔드포인트 URL에 접속합니다.

접속하면 정상적으로 index.html이 로드되는 것을 확인할 수 있습니다.

 

이렇게 AWS S3를 활용하여 정적 웹사이트를 호스팅하는 방법과 버전 관리를 실습했습니다. 추가적으로 CloudFront와 연계하여 HTTPS 적용, S3 Lifecycle Rule을 이용한 자동 버전 관리 등의 기능도 고려할 수 있습니다.