허리다치고나서 진짜 오랜만에 강의 듣는다
ㅋㅋ
#AWS Certified Developer Associate
133. S3 MFA Delete
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html
버킷의 버전 관리 상태 변경
객체 버전 영구 삭제
할때 mfa 인증을 거쳐야 하는 기능
134. S3 MFA Delete 실습
생략
135. S3 기본 암호화
default encryption
버킷 정책 방식이 기본 암호화 보다 먼저 고려됨
객체를 기본적으로 암호화 할때 사용
암호화된 객체를 재암호화 하지는 않음
기본 암호화를 적용하고 객체를 업로드하면
자동으로 설정해놓은 암호화 방식이 적용되어있다.
136. S3 액세스 로그
모든 S3 버킷에 액세스 하는 기록을 하나의 로깅 버킷에 저장하는 서비스
로깅버킷은 단독으로 사용해야 함
- 모니터링 중인 버킷을 로깅 버킷으로 설정하면 안됨 : 로깅 루프가 발생해 버킷의 크기가 기하급수적으로 커지게 됨
137. S3 액세스 로그 - 실습
로깅 버킷을 만든 뒤
모니터링(애플리케이션)버킷에서 서버 액세스 로깅 편집
반영에는 1~2시간 정도 소요된다고 함
이런 로그들은 문제가 발생했을 시 Athena 를 활용해서 분석이 가능하다
138. S3 복제(지역 간 및 동일한 지역)
S3 를 다른 리전 혹은 동일 리전으로 복제
버저닝을 활성화 해야 함
Cross Region Replication (CRR)
Same Region Replication (SRR)
버킷이 서로 다른 계정에 있어도 가능
복제는 비동기식 - 빠른 속도
복제를 위해서는 IAM 역할을 생성해야함
참고사항
- S3 복제를 활성화한 후웨는 새로운 객체만이 복제됨
- S3 버킷의 기존 상태는 복제 되지 않음
- DELETE 작업의 경우 소스에서 대상까지 삭제 마커를 복제할지의 여부를 선택할 수 있는 옵션이 있다.
- 특정 버전 ID 를 삭제하도록 지정하면, 악의적인 삭제를 막기 위해 해당 버전 ID는 복제되지 않음
- 연쇄 복제 불가 (ex - 만약 버킷1이 버킷2로 복제되었고, 버킷2가 버킷3으로 복제된 경우 : 버킷 1에서 생성되는 객체는 버킷2에도 생성될 테지만, 버킷3으로는 복제되지 않는다.)
139. S3 복제 실습
규칙 범위를 설정할 수 있는데 실습에선 모든 객체에 적용하고
Destination 탭에서 복제될 버킷을 선택할 수 있는데, 다른 계정의 버킷을 고를 수도 있다.
역할은 새 역할 생성으로 해주면 알아서 추가된다고 한다
고급설정은 스킵
강의에서는 복제 규칙을 생성한 이후에 추가되는 객체부터 복제된다고 나오는데 2년사이에 기존 객체 복사 기능이 추가되었나보다
기존객체 까지 복제할 수 있어진 것 같다.
일단 강의와 동일한 환경을 맞추기 위해서 아니요로 하고 제출했다
이후 파일을 업로드 하니까 복제되는 모습
복제 시에 객체 버전 id 도 똑같이 복제된다.
기본적으로 삭제마커는 복제 버킷으로 전달되지 않는다.
기본적으로 삭제 사실까지는 복제하지 않는다
같은 버전을 origin 에서 삭제했지만 replicas 에서는 반영되지 않는 모습
(오늘은 여기까지)
(9.30 시작)
140. S3 사전 서명된 URL
퍼블릭으로 설정되지 않은 버킷 객체로의 일시적인 접근 허용 방법
사전 서명된 URL 을 만드려면 SDK 나 CLI 를 사용해야 함
다운로드 - CLI (쉬움)
업로드 - SDK (어려움)
기본적인 만료 시간은 3600초-1시간 이다.
사용예시
- 로그인한 사용자만이 프리미엄 영상을 다운로드 하도록 승인
- 파일을 다운로드할 사용자들의 목록이 지속적으로 변경될 경우, 사용자가 버킷에 직접 액세스 하지 못하게끔 할때 동적으로 URL 을 생성해 사전 서명을 한 뒤 시간이 지나면서 URL을 제공
- 사용자가 버킷의 특정 위치에만 파일을 업로드하도록 일시적으로 승인
141. S3 사전 서명된 URL 실습
aws s3 presign [객체url] --region [버킷리전] --expires-in [만료시간(초단위)]
하면 서명된 url 링크가 반환됨
나온 url로 접속하면 접근이 됨
142. S3 스토리지 클래스 + Glacier
- Amazon S3 Standard - 범용(general purpose)
다중 가용영역에 대한 강한 내구성 - 만약 천만개의 파일을 s3에 업로드 했다면, 평균적으로 10,000년에 한번 하나의 객체 손실이 예상됨.
연평균 가용성 - 99.99% - 높은 가용성
기능 장애를 동시에 두개나 버틸 수 있음 - AZ의 재해에 내성이 굉장히 강함
Use Cases : 빅데이터 분석, 모바일-게임 애플리케이션 배포 등
- Amazon S3 Standard-Infrequent Access (S3 IA)
자주 액세스 하진 않지만 필요할 경우 빠르게 액세스 해야 하는 데이터에 적합
다중 가용영역에 높은 내구성
Amazon S3 Standard 에 비해 비용이 적게 듬 - 객체에 자주 액세스 하지 않는다면 많은 비용이 들지 않음
두개의 기능 장애를 동시에 버틸 수 있음
Use Cases : 재해 복구, 자주 액세스 하지 않을 것으로 예상하는 파일들을 저장하는 데이터 스토리지
- Amazon S3 One Zone-Infrequent Access (S3 One-Zone IA)
데이터가 다중 가용 영역에 저장 되기 전 단일 가용영역에 먼저 저장됨
가용 영역이 다운되더라도 데이터가 여전히 사용 가능하도록 하기 위함
단일 가용영역에 높은 내구성을 가지지만 AZ가 파괴된다면 데이터를 잃게됨
지연시간이 짧고 높은 처리량
비용이 비교적 저렴 + 모든 암호화에 SSL 지원
IA 대비 20% 정도 비용 절감
Use Cases : 온프레미스 데이터를 2차 백업하거나 재생성 가능한 데이터를 저장하는데에 쓰임
- Amazon S3 Intelligent Tiering
S3 Standard 와 마찬가지로 지연 시간이 짧고 처리량이 높지만
약간의 월간 모니터링 비용과 자동 티어 비용이 발생함
이 옵션은 액세스 패턴에 기반하여 액세스 티어들 사이에서 객체들을 자동으로 이동시켜줌 - 즉 s3-standard 와 s3 IA 사이에서 객체를 이동시키는 것
객체의 액세스 빈도를 파악해 자동으로 선택 - s3가 모니터링을 해주는 대가로 약간의 비용이 청구되는 방식
다중 영역에 대한 강한 내구성 + 높은 가용성
- Amazon Glacier
일종의 콜드 아카이브
저렴한 비용의 객체 스토리지로 아카이빙과 백업을 위해 존재함
데이터를 장기간 보관할 때 적합하며 급히 회수할 필요가 없을 때에 적합한 스토리지
데이터는 보통 장기간 보존됨 ( 10s of years )
온프레미스 자기 방식 스토리지에 대한 대안
강한 내구성
스토리지당 드는 비용이 매우 저렴 ($0.004 / GB) + retrieval cost
Glacier 내의 모든 항목은 객체가 아닌 아카이브라고 불리며 각 아카이브의 크기는 40TB까지 가능
아카이브는 버킷이 아닌 금고('Vaults') 에 저장됨
- Amazon Glacier - 3가지 회수 옵션(retrieval option)
옵션별 파일 회수에 걸리는 시간
Expedited ( 1to 5 minutes )
Standard ( 3 to 5 hours )
Bult ( 5 to 12 hours) - 동시에 여러 파일을 회수하는 방식
Glacier 에 저장하는 최소 기간은 90일
- Amazon Glacier Deep Archive - for long term storage
아주 장기간의 저장을 위한 스토리지 - 더 저렴함
회수옵션
Standard ( 12hours )
Bulk ( 48hours )
최소 저장 기간은 180일
143. S3 스토리지 클래스 + Glacier - 실습
버킷을 생성하고 객체를 업로드 할 때 아래 속성에서 확인할 수 있다.
한글화되서 몇개 달라보이는데
중복감소- 이게 더이상 사용하지 않는다고 하는 방식의 스토리지 클래스 인것 같고
지능형 게층화 이게 Amazon S3 Intelligent Tiering 인것 같다.
그리고 한개는 더 생긴것 같은데 Glacier 는 이름이 바뀌어서 Flexible Retrieval 이 됬고
Glacier Instant Retrieval 이 새로 생긴듯 하다 최소 저장 기간은 똑같이 90일이다.
오른쪽에 스토리지 클래스에서 업로드 한 객체들의 클래스를 볼 수 있다
Glacier 에 저장된 데이터를 열람하려면 먼저 복원을 해야하는데
앞에 배운대로 회수 옵션이 있고
각각 회수 옵션에 따라 시간+비용이 든다
144. S3 수명 주기 규칙
전환 작업(Transition actions) : 객체를 한 스토리지 클래스에서 다른 스토리지 클래스로 전환하는 데에 도움을 주는 작업
- 만약 객체를 생성 60일 후 S3 IA 클래스로 보내고, 6개월 후에는 아카이빙을 위해 Glacier 로 옮길때
만료 작업(Expiration actions): 일정 기간이 지난 후 객체를 삭제 하는 것
- ex) 액세스 로그 파일들이 일년이 지나서 더 이상 필요가 없어지면 삭제해달라고 요청하는 방식
- 파일의 오래된 버전을 삭제하는데에도 사용됨 (if versioning is enabled)
- 완료되지 않은 다중 파트 업로드를 정리하는데에도 사용
규칙을 생성해 적용 가능 ( ex - s3://mybucket/mp3/* )
특정 객체 태그를 위해 규칙을 생성 가능 ( ex - Department: Finance )
145. S3 수명 주기 규칙 - 실습
규칙의 범위를 지정할수도 있고 , 버킷의 모든 객체에 적용할 수도 있다
버전관리가 활성화 되야만 설정할 수 있는 규칙들이 있다.
대충 이런식으로 객체 수명 주기를 설정할 수 있다
(오늘은 여기까지)
(10.2 시작)
146. S3 퍼포먼스
최적화를 위한 방법
- KMS 암호화 방식은 s3 성능을 저하시킬 수도 있다
- 분할 업로드(Multi-Part upload) :
100MB 가 넘는 파일은 분할 업로드가 권장되며 5GB가 넘는다면 분할 업로드가 필수이다.
분할 업로드는 병렬화를 통해 전송속도를 높이고 대역폭을 극대화함
- S3 Transfer Acceleration
파일을 aws의 엣지 로케이션으로 파일을 전송함으로써 전송 속도를 높임
엣지 로케이션에서는 데이터를 대상 리전의 s3 버킷으로 보냄
리전보다 엣지 로케이션의 수가 많다 - 200개가 넘고 계속 늘어가는중
분할 업로드와 호환됨
파일을 가장 효율적으로 읽는 법
- S3 바이트 범위 가져오기 ( S3 Byte-Range Fetches ) :
파일의 특정 바이트 범위를 얻어 GET를 마비시키는 방식
바이트 범위를 얻는데 실패한 경우에도 작은 바이트 범위를 얻는 작업을 다시 시도함으로써 실패에 대한 복원성을 가지게 되므로 이 방식은 다운로드의 속도를 높이는데 사용됨
파일의 일부 부분만의 회수를 위해서 사용할 수도 있음
ex) 파일의 앞 어느 부분이 헤더라는 사실을 알고있고 이를 회수 후 전송함으로써 해당 정보를 빠르게 얻을 수 있다
147. S3 & Glacier Select
적은 데이터, 즉 요청한 데이터의 하위 세트를 SQL을 통해 서버측 필터링을 수행하여 회수하려는 작업
SQL은 행과 열로 필터링하는 데에만 사용됨 - 집계 등의 기능은 수행할 수 없음
전체 파일을 회수하는게 아니라서 클라이언트 측에서는 네트워크와 cpu비용이 절감됨
S3 가 선택과 필터링을 해서 필요한 것만을 전달함
S3에서의 서버측 데이터 필터링을 줄이려면 S3 Select 와 Glacier Select 를 사용
쿼리가 복잡하다면 S3 에서 무서버로 처리되는데 이는 나중에 다룰 Athena 로 처리
148. S3 이벤트 알림
s3 이벤트 - ObjectCreated, ObjectRemoved, ObjectRestore, Replication 등
객체 이름 규칙을 사용할 수도 있다. (ex - *.jpg)
Use case :
aws s3에 업로드된 사진의 썸네일을 생성하는것
알림 종류
SNS - 간단 알림 서비스
SQS - 메세지를 대기열에 추가해주는 간단한 큐 서비스
Lambda Function - 커스텀 코드를 생성하는 람다 함수
원하는 만큼 s3 event 의 알림을 설정할 수 있다.
대부분의 경우 몇 초 안에 전달이 되지만 가끔 1분 이상 소요될 때도 있음
모든 이벤트에 대한 알림이 전달되도록 하기 위해서는 버킷의 버저닝을 활성화해야함
149. S3 이벤트 알림 - 실습
생성 제거 복원 이벤트에 대한 설정
강의에는 없었는데 이런 이벤트들도 선택할 수 있나보다
생명주기나 intelligenttering 에 대한 이벤트 알림도 설정할 수 있나보다
대상은 우선 SQS 큐를 사용한다고 한다
SQS 큐를 만들러 가보자
sqs 큐를 생성하는데
밑에 자세한건 만지지않고 이름만 입력하고 바로 생성했다
SQS 에 접근 정책을 설정해 줘야 연결이 가능하다고 한다
sendmessage all allow 로 해줬다
버킷에 사진을 하나 업로드 하고 sqs 를 확인해보니 메세지가 2개 와있었는데
제일 먼저 온거는 test 수신이고
그 다음 수신된게 create obj 에 따른 알림이다
알림 본문
150. Athena 개요
AWS S3에 저장된 객체에 대해 분석을 수행하는 서버리스 쿼리 서비스이다
SQL 언어로 파일을 쿼리하지만 로드할 필요는 없음
Presto 엔진 기반으로 CSV, JSON, ORC 등을 호환함
사용자들이 객체를 S3에 업로드하면 Amazon Athena는 이러한 데이터를 쿼리하고 분석함
원할경우 Amazon QuickSight 와 같은 보고도 받아볼 수 있다
가격은 스캔된 데이터 TB 당 5달러 정도
압축되거나 컬럼형으로 저장된 데이터를 사용할 경우 비용을 절감할 수 있다
Use cases : 다양한 경우, 비즈니스 인텔리전스 분석, 보고 , vpc elb로그 flow 등
151. Athena 실습
athena s3 access logs 를 검색하면 create table not exists SQL 명령을 찾을 수 있다
생성된 테이블 옆에 메뉴를 열어서 미리보기를 클릭하면
아래 섹션에서 만든 테이블을 확인할 수 있다
SELECT requesturi_operation, httpstatus, count(*) FROM "s3_access_logs_db"."mybucket_logs"
GROUP BY requesturi_operation, httpstatus;
위 sql 문처럼 입력하면 요청한 uri 명령에 대한 httpstatus 결과 값이 몇번 호출되었는지도 확인할 수 있다
이런 기능으로 여러가지 응용할 수 있나보다
끝
'AWS > AWS Certified Developer Associate' 카테고리의 다른 글
[Udemy][day-31,32] Section15 : ECS, ECR 및 Fargate - AWS의 도커 (0) | 2022.11.11 |
---|---|
[Udemy][day-29,30] Section14 : CloudFront (0) | 2022.11.04 |
[Udemy][day-25] AWS 강의 복습 (0) | 2022.09.14 |
[Udemy][day-23~24] AWS 강의 section 12 : AWS CLI, SDK, IAM 역할 및 정책 (0) | 2022.08.29 |
[Udemy][day-19~22] AWS 강의 section 11 : Amazon S3 소개 (0) | 2022.08.18 |