1. Amazon S3 란?
- 객체 스토리지 서비스로, 스토리지 서비스를 제공할 뿐만 아니라 설정에 따라 정적 웹 서버로 공개하거나 쿼리를 사용할 수 있는 기능을 가지고 있다.
- 특징
- 확장성: EC2 처럼 확장, 축소가 쉽고 목적에 따른 다양한 스토리지 클래스가 준비되어 있다. 수명 주기 정책을 사용해 자동 이동이 가능하다.
- 가용성, 내구성: 장애, 오류, 위협에 강하며 S3 객체는 최소 4개의 가용 영역에 자동 복제되어 보존되기 때문에 한쪽에 장애가 발생해도 사용할 수 있다.
- 신뢰성: 암호화 기능, 접근 관리도구가 있다
- 다양한 관리 기능: 실제 사용환경에 맞는 스토리지 클래스 선택이 가능하다
- 스마트한 기능: S3 Select라는 데이터에 쿼리를 실행하는 기능과 서비스가 존재한다. Amazon Athena, Amazon Redshigt Spectrum 등의 분석서비스와 호환되며, AWS Lambda와 연동이 가능하다.
- 요금체계 = 저장 용량(데이터 저장한 양) + 전송량(요청, 업로드, 다운로드한 양)
2. 스토리지 클래스 : 스토리지의 종류
- Standard :
- 일반적인 스토리지 클래스. 3곳 이상의 AZ(가용 영역)에 데이터가 저장되어 있어 99.9%의 가용성을 보장하며 데이터 검색시 요금과 최소용량의 요금이 없어 일할로 계산되어 사용하기 쉬운 클래스이다.
- Intelligent-Tiering:
- 빈번한 액세스와 간헐적 액세스에 최적화된 두 가지 계층에 객체(파일)를 저장하며 어느 쪽에 저장할지는 객체별 모니터링 결과로 자동으로 이동된다. 최소 저장 기간에 대한 요금이 설정되어 있어 과금될 수도 있다.
- Infrequent Access: Standard
- 클래스에 비해 저장 요금이 낮게 설정되어 있지만 액세스 요금이 조금 높게 설정되어 있어 액세스 빈도가 낮고 용량이 큰 데이터에 접합하다.
- Reduced Redundancy Storage:
- Standard에 비해 이중화 수준을 낮춰 낮은 가격이며 저장되는 AZ(가용 영역)가 한 군데이여서 문제 발생시 데이터 유실 가능성이 있다.
- S3 Glacide/ S3 Glacier Deep Archive :
- 데이터 아카이브와 장기간 백업을 고려해 만든 스토리지 클래스이며 가격이 낮고 대용량 데이터를 저렴한 가격으로 보관할 수 있다. 데이터는 '볼트'라는 컨테이너에 저장되어 저장된 데이터를 읽으려면 다른 S3 버킷으로 옮겨야 한다. 데이터 검색시 통째로 검색 되어 Glacier상 데이터와 검색 대상의 데이터 양쪽에 요금이 부과된다.
3. S3 사용 절차
- 관리자는 버킷 생성, 설정 및 기본적인 S3 조작은 관리 콘솔의 S3 대시보드에서 수행할 수 있으며 일반 사용자는 SFTP(SSH로 암호화된 파일 전송 프로토콜)로 액세스해 파일을 업로드할 수 있다.
- 서비스
객체 | S3의 엔터티 단위. 텍스트, 이미지 등의 파일 |
버킷 | 객체를 저장하는컨테이너 |
버킷명 | 유일한 이름이어야 하며 웹 서버로 사용할 경우 도메인명이 버킷명이 된다. |
객체 키 | 객체 식별자. 모든 객체는 반드시 하나의 키를 가지며 버킷, 객체, 키 버전을 조합해 객체를 식별한다. |
객체 메타데이터 | 이름과 값의 세트. 객체 업로드시 설정 가능 |
리전 | 버킷의 물리적 보관 장소가 있는 지역 |
Amazon S3의 데이터 일관성 모델 | 데이터를 자동으로 복제해 저장하며 쓰기 지연에 다른 데이터 불일치을 방지하기 위해 반영 시간이 조금 걸리는 것. |
버전 관리 | 여러 버전을 보관하는 것. |
로그 | 버킷 단위나 객체 단위의 로그 기록 가능 |
암호화 | S3에 저장되는 데이터를 자동으로 암호화 |
액세스 제어 | S3 버킷에 대한 권한 설정 |
웹 서비스 | S3 버킷을 웹 사이트로 사용하는 기능 |
- 사용 절차
- AWS로그인
- 버킷 생성(버킷명 설정)
- 버킷 설정(웹 서버로 사용시 Static website hosting 설정, 접근 가능 사용자 설정)
- 파일 업로드
- 주의사항
- S3생성 후 이름과 리전 변경이 불가능
- 웹 서버로 사용시 버킷에 대한 공개, 도메인, 익명 접속 허가 등을 고려해야 함
- 파일서버로 사용시 사용법에 맞게 도구나 SFTP 준비
- 로그 저장소로 사용시 접속 대상과 인증밥벙 고려
4. 객체와 버킷
- S3 안에는 객체와 버킷이 존재한다. 버킷 안에 객체가 존재한다.
- 버킷 : 윈도의 C드라이브, D드라이브 같은 것. 폴더가 아니므로 버킷 안에 버킷 생성 불가능. AWS계정 하나당 100개까지 생성 가능
- 버킷명은 유일해야하며 명명규칙이 있다.
- 객체 : 파일 같은 것, 관리를 위한 메타데이터도 포함. 버킷 한 개에 저장할 수 있는 객체수와 총 용량 제한이 없다. 객체는 버킷에 병렬로 배치된다. 관리 콘솔에는 폴도로 표시되며 생성, 삭제, 업로드, 다운로드 가능하다.
5. 버킷 정책과 사용자 정책
S3 버킷에 대한 접속 제한이 가능하다. 버킷 단위로 설정한다.
- 제한 설정 방법 3가지
- 버킷 단위로 제한하는 버킷 정책
- IAM 사용자 단위로 제한하는 사용자 정책
- ACL(액세스 제어 목록)에 의한 관리 정책
- 접속 제한은 누가, 무엇을 어떤 것에 대해 가능한지의 여부를 결정하는 것이다.
- 리소스(제한 대상이 되는 버킷, 객체), 작업(GET/PUT/DELETE 작업), 효과(설정여부 , 허가/거부), 보안 주제(허가/거부할 사용자 및 계정, 서비스)에 대해 설정 가능하다.
6. 웹 사이트 호스팅
- S3는 스토리지일 뿐만 아니라 웹 호스팅 기능으로도 사용 가능한데 이 기능을 사용하면 생성한 버킷을 그대로 웹 사이트로 사용 가능하다. 정적 웹 사이트(서버가 스크립트를 처지 않음) 호스팅 가능
- 웹 호스팅으로 사용하기 위한 추가 설정
- 정적 웹 호스팅 활성화
- 공용 액세스(public access) 차단 해제
- 버킷 정책을 '모든 사용자'로 설정(배포할 파일에 누구든지 접속 가능 해 보안에 유의 할 것!)
- 버킷명을 사용할 도메인명으로 지정
- 개인 도메인 소지한 경우 DNS 서비스를 사용해 설정(예를 들어 버킷명을 http:sample.bucket 으로 지정해도 그대로 사용 불가능하기 때문에 따로 DNS 설정을 해야한다)
7. 파일 업로드와 다운로드
- 관리콘솔이나 CLI 사용해 업로드 다운로드가 가능하다.
- 클라이언트 파일을 S3 버킷으로 업로드하는 다양한 방법
- API, SDK : IAM 사용자에게 액세스키와 보안 액세스 키 발행 해 사용하고 싶은 도구에 설정
- 멀티 파트 업로드: 100MB 이상의 파일 업로드시 추천. 객체를 여러 개로 나눠 업로드 하고 완료 후 객체 하나가 된다.
- AWS Transfer for SFTP: SFTP를 사용해 파일 전송하는 서비스. SFTP 서버 엔드 포인트로 설정해 서드 파티의 SFTP 도구를 사용할 수 있다. 초기 비용은 안 들고 SFTP 서버를 사용한 시간과 데이터 전송량에 대해 과금 된다.
- AWS DataSync : 온프레스 스토리지 시스템과 AWS 스토리지 서비스(EC2, S3)간 대용량 데이터 전송을 위한 서비스.
8. 액세스 관리 및 변조 방지
- 스토리지는 관리자 외 일반 사람이 액세스하는 경우가 많아 이를 감시하기 위해 액세스 기록을 무료로 제공한다.
- 기록은 무료이지만 기록한 파일 보관에 대한 요금은 발생한다.
- 액세스 로그: 서버에 어떤 요청이 있었는지 기록하는 기능.
- 주요 로그 내용
- 원격 IP : 요청자 IP주소
- 요청자
- 요청 ID : 요청 식별 위한 Amazon S3가 생성한 ID
- 작업: 요청 작업 종류
- 키: 요청된 객체 키
- 요청URL
- 오류 코드
- 보낸 바이트
- 객체 크기
- 총 시간
- 반환 시간
- Referrer: HTTP Referrer 의 헤더값
- 사용자 에이전트: HTTP 사용자 에이전트의 헤더값
- 버전 ID: 요청된 버전 ID
- 호스트 헤더: S3 접속에 사용하는 엔드포인트
그 외 액세스 관리 방법
- 스토리지 클래스 분석: 객체에 엑세스 빈도를 분석하는 기능
- 객체 잠금: 객체를 보호하는 기능. 객체 변경 허용하지 않아 객체 삭제, 덮어쓰기, 변조 등 방지 가능.
- S3 인벤토리: 버킷에 들어 있는 객체의 메타데이터의 목록을 매일/매주 생성하는 기능
9. 버전 관리, 수명 주기, 복제
- 버전을 여러 개 저장하는 것으로 버킷 단위로 설정한다.
- 버전 관리 : 미사용(디폴트) / 활성화 / 버전 일시 중지 중 선택 가능
- 수명 주기 정책 : 객체가 정기적으로 수행할 작업을 설정하는 기능.
- Transition : 객체를 다른 스토리지 클래스로 이동
- Expiration : 유효 기간 만료된 객체 삭제
- NoncurrentVersinTransition: 현재 스토리지 클래스에서 객체 유지 시간 지정
- NoncurrentVersionExpiration: 과거 버전의 객체 삭제 전 유지할 시간 지정
- AbortIncompleteMultipartUpload: 멀티 파트 업로드 진행 상태 유지할 최대 시간 지정
- ExpiredObjectDeleteMarker: 만료된 객체 삭제 표시 제거
- 교차 리전 복제 :
- 다른 리전의 버킷에 객체를 비동기적으로 복사하는 것.
- 버킷의 소유자가 동일하지 않아도 되지만 복제 작업을 수행하기 위해 IAM 역할(접근권한)을 부여해야 한다.
- 복제에 사용할 두 버킷은 버전 관리가 활성화 되어 있어야 한다. (같은 리전 버킷은 복제 설정 불가능)
10. 데이터 분석과 연계
- AWS 데이터 분석 관련 서비스를 이용하면 S3 객체, 객체 내용 분석 가능하다.
- S3 Select, Amazon Athena : CSV, JSON 과 같은 구조화된 텍스트 형식의 데이터를 SQL의 SELECT문으로 실행하는 기능이며 서버가 필요하지 않다
- Amazon redshift Spectrum : 대용량 데이터 처리하며 Redshift cluster(Redshift의 관리도구)가 필요
11. Amazon CloudFront 콘텐츠 배포 서비스
- Amazon CloudFront : 고속 콘텐츠 전송 네트워크 서비스이며 웹 콘텐츠를 빠르게 전송한다. S3 의 웹 사이트 호스팅 기능으로 구축한 웹 서버와 조합해 많이 사용한다.
- 웹 서버의 내용을 캐시하는 엣지 서버(리전의 네트워크 말단에 위치해 있어 클라이언트가 접속하는 네트워크와 거리가 가까워 반응속도가 빠르다)를 사용
- 데이터 송신에 대한 요금이 부과되며 요금 계층별로 사용 가능한 엣지 서버가 다르므로 확인해야 한다.
'일기장' 카테고리의 다른 글
AWS RDS 데이터베이스 서비스 (0) | 2023.08.17 |
---|---|
6. AWS 가상 네트워크 서비스 Amazon VPC (0) | 2023.08.08 |
문자열 겹쳐쓰기 (0) | 2023.08.02 |
홀짝 구분하기 (0) | 2023.08.02 |
덧셈식 출력하기 (0) | 2023.08.02 |