AWS Educate에서 실습한Getting Started with Storage 실습을 블로깅하며 Amazon Simple Storage Service(Amazon S3) 기능 중 일부를 사용하여 정적 웹 사이트를 생성한다.
S3란? - Amazon S3(Simple Storage Service)는 클라우드 기반 객체 스토리지 서비스로 리젼의 버킷 내부에 객체를 저장하며 다양한 상황에서 사용 가능한 유연한 스토리지. 99.999999999%의 데이터 내구성과 고가용성을 가진다.
버킷 : 클라우드 스토리지 서비스에서 데이터를 저장하는 데 사용되는 기본 컨테이너.
Amazon S3에는 이미지, 동영상, 텍스트 파일 등 모든 유형의 파일을 업로드할 수 있다. 예를 들어 Amazon S3를 사용하여 백업 파일, 웹 사이트용 미디어 파일 또는 보관된 문서를 저장할 수 있다. Amazon S3는 저장 공간을 무제한으로 제공한다. Amazon S3에 저장할 수 있는 객체의 최대 파일 크기는 5TB이다.
객체 스토리지에서 각 객체는 데이터, 메타데이터, 키로 구성된다.
데이터는 이미지, 동영상, 텍스트 문서 또는 기타 유형의 파일일 수 있다. 메타데이터에는 데이터의 내용, 사용 방법, 객체 크기 등에 대한 정보가 포함되어 있다. 객체의 키는 고유한 식별자이다.
해당 실습은 다음의 이해를 목표로 함.
- Amazon S3에서 버킷을 생성합니다.
- 정적 웹 사이트를 호스트하도록 버킷을 구성합니다.
- 버킷에 콘텐츠를 업로드합니다.
- 버킷 객체에 대한 퍼블릭 액세스를 활성화합니다.
- 미리 서명된 URL을 사용하여 버킷 객체를 안전하게 공유합니다.
- 버킷 정책을 사용하여 버킷을 보호합니다.
- 웹 사이트를 업데이트합니다.
- Amazon S3 콘솔에서 객체 버전을 확인합니다.
1: Amazon S3에 버킷 생성
우선, Amazon management Console에 엑세스 한 다음, AWS Management Console의 Services(서비스) 메뉴에서 S3를 선택한다. 그런 다음 버켓 만들기을 선택한다.
버킷에 임의의 이름을 부여한 다음, 객체 소유권에서 ACL 활성화를 선택
주의 : 버킷 이름은 전역적으로 고유해야 함. 즉, 모든 AWS 리전 및 모든 AWS 계정에서 동일한 버킷 이름을 사용할 수 없다. 다른 사용자가 이미 사용하고 있는 이름으로 버킷을 만들려고 하면 버킷 생성 오류가 발생함.
버킷에 대한 퍼블릭 액세스는 기본적으로 차단되기에 정적 웹 사이트의 파일은 인터넷을 통해 액세스할 수 있어야 하므로, 퍼블릭 액세스를 허용해야 한다.
이 버킷의 퍼블릭 액세스 차단 설정에서 모든 퍼블릭 액세스 차단 확인란의 선택을 취소한 다음 "현재 설정으로 인해 이 버킷과 포함된 객체가 공개될 수 있다는 사실을 확인합니다" 확인란을 선택한다.
이제 누구나 인터넷을 통해 버킷의 내용에 액세스할 수 있게 되었다.
버킷 버전 관리에서 활성화를 선택한다. 참고로 한번 활성화 하면 다시 끌 수 없다.
버킷 버전 관리: S3 버킷에 업로드된 모든 객체의 이전 버전을 자동으로 저장한다. 실수로 파일을 삭제하거나 덮어쓴 경우 이전 버전으로 쉽게 복원할 수 있다. 하지만 버킷 저장 용량이 증가 할 수 있음을 유의해야 한다.
태그에서 태그 추가를 선택하고 다음을 입력한다.
- 키: Department
- 값: Marketing
태그를 사용하는 이유는 다음과 같다.
- 버킷 필터링: 버킷 목록을 필터링하여 특정 부서 또는 프로젝트와 관련된 버킷만 볼 수 있음.
- 비용 추적: 스토리지 비용을 쉽게 추적할 수 있음.
- 액세스 제어: 태그 기반 정책을 사용하여 버킷에 대한 액세스를 제어할 수 있음.
키은 고유해야하지만, 값은 중복되어도 상관없다.
버킷 생성을 선택하고 버킷 섹션에서 새 버킷 이름을 선택한다.
2: Amazon S3에서 정적 웹 사이트 구성
이제 정적 웹 사이트 호스팅 버킷을 구성한다. 정적 웹 사이트 호스팅 패널로 스크롤하여 편집을 선택 후
다음 설정을 구성한다.
- 정적 웹 호스팅 : 활성화을 선택합니다. -> S3 버킷을 웹서버로 설정하여 정적콘텐츠들 호스팅
- 호스팅 유형 : 정적 웹 사이트 호스트를 선택합니다. -> S3자체 도메인을 사용하여 웹사이트를 제공
- 인덱스 문서 : index.html을 입력합니다. -> 사용자에게 기본적으로 보여주는 html파일
- 오류 문서 : error.html을 입력합니다. -> 오류가 발생시 html파일
참고: index.html 및 error.html이 이미 표시되어 있더라도 입력해야 함.
정적 웹 사이트 호스팅 패널의 버킷 웹 사이트 엔드포인트에서 링크를 선택한다.
버킷 사용 권한을 아직 구성하지 않았기 때문에 403 Forbidden(403 사용 권한 없음) 메시지가 표시된다. 나중에 돌아갈 수 있도록 웹 브라우저에서 이 탭을 열어 두자.
3: 버킷에 콘텐츠 업로드
이제 버킷에 정적 파일을 올릴일만 남았다. Amazon S3 콘솔로 돌아가 객체 탭을 선택한 다음, 파일을 업로드한다.
4: 객체에 대한 퍼블릭 액세스 활성화
Amazon S3에 저장된 객체는 기본적으로 프라이빗으로 설정된다. 이 설정은 조직에 보안에 도움이 되지만 사용자가 웹사이트를 볼 수있어야 하니 업로드한 객체를 퍼블릭 액세스 가능으로 설정한다.
먼저 현재 객체 상태가 프라이빗인지 확인한다. 403 Forbidden(403 사용 권한 없음) 메시지가 표시된 브라우저 탭으로 돌아가서 새로고침을 눌러본다.
403 Forbidden(403 사용 권한 없음) 메시지가 여전히 표시는데 이는 정상적인 응답으로, 이 메시지는 Amazon S3에서 정적 웹 사이트를 호스트하고 있으나 콘텐츠가 비공개임을 나타낸다.
다음 두 가지 방법으로 Amazon S3 객체를 퍼블릭으로 설정할 수 있다.
- 전체 버킷이나 버킷의 특정 디렉터리를 퍼블릭으로 설정하려면 버킷 정책을 사용
- 액세스 제어 목록(ACL)을 사용하여 버킷의 개별 객체를 퍼블릭으로 설정
S3 콘솔로 돌아가 세 객체를 모두 선택한다. 작업 메뉴에서 ACL을 사용하여 퍼블릭으로 설정을 선택한다.
세 객체의 목록이 표시되는데,퍼블릭으로 설정을 선택한다. 이제 정적 웹 사이트에 퍼블릭 액세스가 가능해졌다.
403 forbidden 메시지가 표시된 웹 브라우저 탭으로 돌아서 웹 페이지를 새로 고친다.
5: 미리 서명된 URL을 사용하여 객체를 안전하게 공유
객체를 사용자 또는 사용자 그룹과 일시적으로 안전하게 공유해야 하는 경우 미리 서명된 URL을 생성하면 된다.
Amazon S3 콘솔로 돌아가 객체 탭을 선택한 후 파일을 버킷에 업로드 한다.
이제 비공개 상태인 파일을 공개해야 하는데 이번에는 객체를 퍼블릭으로 설정하는 대신 미리 서명된 URL을 만들어 파일에 액세스한다.
객체 탭에서 업로드한 파일를 선택하고 작업 메뉴에서 미리 서명된 URL로 공유를 선택한다. 팝업 창에서 미리 서명된 URL이 만료될 때까지의 기간을 구성한다.
미리 서명된 URL 생성을 선택 후 페이지 상단 배너에서 생성된 URL을 복사한다. 새 브라우저에 넣으면 보고서가 웹프라우저에 표시되며, 시간이 지나면 링크는 사라진다.
6: 버킷 정책을 사용하여 버킷 보호
웹 사이트 파일을 보호하고 누구도 삭제하지 못하도록 하려면 웹 사이트 파일에 삭제 권한을 허용하지 않는 버킷 정책을 적용하면 된다. S3 버킷 정책을 설정할 때 JSON과 AWS CLI 두 가지 방식을 사용할 수 있다.
S3콘솔에서 권한을 클릭 후 버킷 정책에 편집을 선택한다. 정책 텍스트 편집기에서 기존 정책 텍스트를 준비한 텍스트로 바꾼다.
다음으로 정책 편집기의 텍스트를 업데이트한다. 정책 편집기의 다음 코드 줄에서 자리 표시자를 버킷 이름으로 교체한다
객체 탭으로 돌아가서 삭제를 해봐도 Failed to delete(삭제 실패) 창에 나열되며 삭제가 안된다.
7: 웹 사이트 업데이트
웹 사이트 파일을 삭제하지 못하도록 하는 정책을 구성했어도 HTML 파일을 편집하고 S3 버킷에 다시 업로드하여 웹 사이트를 업데이트를 할 수 있다. Amazon S3는 객체 스토리지 서비스이므로 전체 파일을 업로드해야 하며 업로드시 기존의 파일이 대체된다. 파일의 개별 수정을 원한다면 EBS나 EFS를 써야한다.
컴퓨터에서 텍스트 편집기(예: 메모장 또는 TextEdit)에 index.html 파일을 로드한다. 그런 다음 Served from Amazon S3 텍스트를 찾아서 Created by <YOUR-NAME>으로 바꾸고 저장한다.
8: 파일 버전 탐색
버킷 버전 관리 기능은 기본적으로 꺼져 있다. 버전 관리 기능이 꺼져 있으면 객체에 대한 변경을 취소할 수 없다. 예를 들어, 새로운 버전의 파일을 업로드하면 기존 파일이 새 파일로 대체된다.
버킷을 생성할 때 버전 관리 기능을 켤 수 있다. 이 작업에서는 버킷에서 사용할 수 있는 객체 버전을 확인한다.
객체 탭에서 버전 표시를 선택하여 버킷 버전 관리를 활성화한다.
각 파일에는 버전 ID가 있다. 버전 ID는 버전 관리가 활성화되면 Amazon S3에서 자동으로 생성한다. index.html 파일의 새 버전을 업로드했으므로 해당 파일의 버전이 두 개여야 한다. 현재 버전은 웹 사이트를 업데이트할 때 업로드한 파일입니다.
'Amazone Web Service' 카테고리의 다른 글
AWS Educate : DataBases 실습 (0) | 2024.05.29 |
---|---|
AWS Educate : Compute (0) | 2024.05.29 |
[AWS - SkillBuilder] Introduction to Amazon Aurora (Korean) (0) | 2024.05.24 |
AWS Educate : Security 실습 (0) | 2024.05.08 |
EC2 인스턴스의 요금 (0) | 2024.05.01 |