[Cloud] S3의 이해
Amazon Simple Storage Service (Amazon S3)
AWS S3 란?
- Amazon S3(Simple Storage Service)는 AWS 서비스 중에서 EC2 서비스와 더불어 가장 오래되고, 기본이 되는 객체 스토리지 서비스다.
- S3에 저장되는 데이터를 객체라고 하며, 이 객체 저장소를 버킷(bucket)이라고 한다.
- 객체에 대한 입출력은 HTT 프로토콜로 하며, REST API를 이용하여 명령이 전달된다.
특징
- 99.999999999%의 내구성으로 디자인되어 데이터 손실을 최소화하도록 규정
- 데이터 저장 공간이 거의 무제한에 가까워 특별한 용량 제한 없이 데이터를 저장할 수 있음
- 필요한 경우 다양한 스토리지 계층으로 데이터를 분류하여 데이터 저장 비용을 절감 할 수 있음.
- 보안 규정 준수 및 감시 기능을 제공하고 있어 데이터가 안전하게 저장되고, 인증된 시용자만 접근할 수 있도록 구성
- 필요한 경우 접근 권한 정책을 이용하여 해당 객체의 접근을 제어할 수 있음.
Amazon S3 storage classes
- Amazon S3는 다양한 사용 사례에 맞게 설계된 다양한 객체 수준 스토리지 클래스를 제공.
- 참고 : https://aws.amazon.com/ko/s3/storage-classes/
- Amazon S3 Standard
- 자주 접근되는 데이터에 적합하며, 높은 내구성과 가용성을 제공
- Amazon S3 Intelligent-Tiering
- 자주 액세스되는 데이터를 자동으로 감지하여 비용을 최적화할 수 있는 스토리지 클래스
- 접근 빈도에 따라 데이터가 자동으로 “Frequent Access”와 “Infrequent Access”를 이동
- Amazon S3 Standard-Infrequent Access (Amazon S3 Standard-IA)
- 드물게 액세스되지만, 필요 시 빠르게 접근해야 하는 데이터에 적합.
- 가장 낮은 비용
- Amazon S3 One Zone-Infrequent Access (Amazon S3 One Zone-IA)
- 단일 가용 영역에만 데이터를 저장하여 비용을 절감.
- 가용성은 낮음.
- Amazon S3 Glacier
- 장기 아카이빙을 위한 저비용 스토리지 클래스
- 데이터 접근 시 수 분에서 수 시간의 지연이 발생할 수 있음.
- 법적 또는 규정 준수를 위한 장기 데이터 아카이빙 용도로 사용.
- S3 Glacier Deep Archive
- S3 Glacier보다 더 저렴한 장기 아카이빙 스토리지로, 데이터 복구 시간이 수 시간에 달할 수 있음
- 거의 액세스하지 않는 데이터를 수년간 보관하는 경우 사용.
Amazon S3 bucket URL
Amazon S3의 특징
- Amazon S3는 객체에 대해 빠르고 내구성과 가용성이 높은 키 기반의 접근성을 제공하여 데이터의 저장 및 검색에 특화된 객체 스토리지
S3는 하나의 리전 내 최소 세 개 이상의 물리적으로 분리된 가용 영역에 데이터를 복제해서 저장하므로 높은 내구성과 고가용성을 제공
버킷에 welcome.mp4 오브젝트를 넣으면 알아서 해당리전내에 여러 퍼실리티에 나눠서 저장
- 서버의 OS 도움 없이 객체별 접근이 가능하므로 데이터 저장 및 활용에 용이
- 사실상 무제한 스토리지: 스토리지에 대한 실질적 제한은 없으며, 대규모 데이터를 저장할 수 있음.
- 단일 객체 크기: 단일 객체는 최대 5TB까지 저장 가능. 대용량 파일(예: 비디오, 백업 파일 등) 저장 가능
- 멀티파트 업로드: 큰 파일을 분할하여 업로드하고, 업로드 완료 후 병합하는 기능 제공. 특히 대용량 파일 업로드 시 유용
Amazon S3의 사용 사례
- 백업 및 복구: 안정적인 내구성을 통해 백업 데이터를 안전하게 보관 가능.
- 데이터 분석: 대량의 데이터 저장 및 분석에 용이. Amazon Athena와 연계하여 직접 쿼리 수행 가능.
- 정적 웹사이트 호스팅: S3를 이용하여 정적 콘텐츠(HTML, 이미지, 비디오 등) 호스팅 가능.
- 로그 저장 및 분석: AWS 서비스 및 애플리케이션의 로그 데이터를 저장하고 분석
LAB : 버킷 데이터 저장소를 이용한 웹 서버 운영
- 버킷에 저장된 image를 웹 서버로 서비스 하기
Task1: S3 버킷 생성
- 버킷 생성
- 일반구성
- 버킷이름 : web-sample-images-seongmi
- 객체 소유권 : ACL 비활성화됨
- 모든 퍼블릭 액세스 차단 - 허용
- 버킷 버전 관리 : 비활성화
- 버킷만들기
- 일반구성
버킷에 image.png 파일 업로드
- 저장
- URL 확인
- 업로드한 이미지 선택후 [URL 복사]
Task 2: 웹 서버 구성
- 보안그룹
- 이름 : WEB-SG
- 인바운드 규칙 : 80,22 ← anywhere
- EC2인스턴스 생성
- 이름 : webserver
사용자 데이터
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#!/bin/bash # Install and start Apache dnf update -y dnf install httpd -y systemctl enable --now httpd # Create the index.html file cat <<EOL > /var/www/html/index.html <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>성미의 웹페이지</title> </head> <body> <h1>성미의 웹페이지</h1> <p>성미의 웹페이지에 오신 것을 환영합니다.</p> <hr> <img src="https://web-sample-images-lee.s3.ap-northeast-2.amazonaws.com/pet.jpg" style="max-width: 100%; height: auto;"> </body> </html> EOL # Restart Apache to apply changes systemctl restart httpd
- 태그 추가
- Backup
- Yes
Task 3: 버킷 콘텐츠를 공개적으로 사용 가능하도록 설정
- 기본적으로 Amazon S3은 계정 및 버킷에 대한 퍼블릭 액세스를 차단
- 버킷을 사용하여 웹 사이트에 호스팅할 경우 퍼블릭 액세스 차단 설정을 편집 [참고]
- 버킷 선택후 [권한]
- 퍼블릭 액세스 차단(버킷 설정) - [편집] - 모든 퍼블릭 액세스 차단 해제
버킷정책 [편집]
1 2 3 4 5 6 7 8 9 10 11 12
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "<버킷ARN>/*" } ] }
Task 4: 웹페이지 확인
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.