Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 |
29 | 30 | 31 |
Tags
- QueryDSL
- Docker
- spring
- Redis
- kakao
- codebuild
- Spring Boot
- rds
- mapping
- backend
- 스터디
- ec2
- 자격증
- DynamoDB
- aws
- goorm
- 티스토리챌린지
- MSA
- 개발자
- 백엔드
- serverless
- 오블완
- s3
- CICD
- sqs
- codedeploy
- CodeCommit
- backenddeveloper
- jpa
- orm
Archives
- Today
- Total
gony-dev 님의 블로그
Section 13. Amazon S3 고급 본문
S3
1. Moving between Storage Classes
- 스토리지 클래스 간에 객체를 이동할 수 있는 방법이 있다! 이를 알아보자.
- 객체에 자주 액세스하지 않을 것을 알고 있다면 표준-IA로 이동하고, 객체를 아카이브(보관)할 예정임을 알고 있다면 Glacier 계층이나 Deep Archive 계층으로 이동해야한다.
- 이러한 객체를 수동으로 이동할 수도 있지만 수명 주기 규칙을 사용해 자동화할 수도 있다.
2. Lifecycle Rules
수명 주기 규칙은 다양한 요소로 이루어져 있다. 이는 다음과 같다.
- 전환 작업(Transition Actions) | 객체를 구성하여 또 다른 스토리지 클래스로 전환한다.
- 예시로 생성한지 60일 후에는 표준 클래스로 이동하고, 6개월 후에는 아카이빙을 위해 Glacier로 이동한다.
- 만료 작업(Expiration Actions) | 객체를 구성하여 일정 기간이 지나면 객체를 만료 또는 삭제시킨다.
- 예시로 액세스 로그 파일의 경우 365일 후 삭제할 수도 있고, 버전 관리를 활성화했다면 만료 작업을 통해 모든 파일을 삭제할 수도 있다.
- 완료되지 않은 멀티파트 업로드를 삭제하는 데에 사용될 수도 있다.
- 특정 접두사에 규칙을 지정하여 전체 버킷이나 버킷 내의 특정 경로에 적용되도록 설정할 수도 있다.
- 또한 특정 객체 태그에 지정할 수도 있다.
3. Storage Class Analysis
- 객체의 클래스를 전환하는 데 가장 적합한 일 수를 결정하려면 S3 분석을 사용하면 된다!
- 표준이나 표준 IA를 권장하며 One Zone-IA나 Glacier에서는 사용할 수 없다.
- S3 분석에서는 권장 사항과 통계를 제공하는 csv 보고서가 생성된다.
S3 Event Notifications
- S3 이벤트란 객체가 생성, 삭제, 복원, 복제 등 다양한 작업이 일어나는 것을 말한다.
1. IAM Permissions
- 이벤트 알림이 작동하기 위해서는 IAM 권한이 필요하다.
- S3 서비스에서 SNS 주제로 데이터를 보낸다고 가정하자. 그렇게 하기 위해 SNS 리소스 접근 정책이라는 것을 첨부해야 한다.
- 이를 통해 S3 버킷에서 SNS 주제로 바로 메시지를 보낼 수가 있다.
- 다른 서비스 이용도 마찬가지이다.
2. Amazon EventBridge
- 과정을 설명하면 이벤트는 모두 S3 버킷으로 가서 Amazon EventBridge로 간다.
- EventBridge에서 설정한 규칙들을 통해 18 종류의 AWS 서비스를 목적지로 하여 이벤트를 보낼 수 있다!
- EventBridge 사용 시, 고급 필터링 옵션들을 사용할 수 있고, 많은 목적지를 가질 수 있으며, EventBridge의 용량을 늘릴 수 있다.
Baseline Performance
- 기본적으로 Amazon S3는 매우 높은 요청 수로 자동 스케일링되며 100~200 ms의 매우 짧은 지연 시간을 갖는다.
- 애플리케이션에서는 적어도 prefix당 초당 3500 개의 PUT, COPY, POST, DELETE를 하거나 5500 개의 GET, HEAD 요청을 갖는다.
- 위의 4개 접두사 모두에 균등하게 읽기를 분산한다면 GET, HEAD에 초당 22000개의 요청을 가질 수 있다.
- 버킷의 접두사 수에는 제한이 없다!
1. S3 Performance
s3의 성능을 최적화하는 방법을 알아보자.
- 멀티파트 업로드
- 100MB가 넘는 파일은 멀티파트 업로드를 하는 것이 좋다.
- 5GB가 넘는 파일에는 반드시 사용해야 한다.
- 멀티파트 업로드는 업로드를 병렬화하므로 전송 속도를 높여 대역폭을 최대화하는 데 도움이 된다.
- S3 전송 가속화
- 파일을 AWS 엣지 위치로 전송하여 전송 속도를 높이면 해당 데이터가 대상 지역의 S3 버킷으로 전달된다.
- 전송 가속화는 멀티파트 업로드와 호환된다.
2. S3 Performance - S3 Byte-Range Fetches
- 범위 가져오기는 파일의 특정 바이트 범위를 가져와 가져오기를 병렬화하는 것이다.
- 따라서 특정 바이트 범위를 가져오는 데 실패한 경우라도 더 작은 바이트 범위를 다시 시도할 수 있다.
- 다운로드 속도를 높이는 데 사용될 수 있다.
- 요지는 가져오기를 병합하고 다운로드 속도를 높이는 것이다.
- 또한 부분적인 데이터만 가져올 수도 있다!
S3 Select & Glacier Select
S3에서 파일을 검색하려는 점은 알고 있으나, 검색 후 필터링을 해야하기 때문에 데이터를 너무 많이 검색해야한다.
하지만 SQL를 이용해 서버 측에서 필터링을 수행할 수 있다면 어떨까?
- 간단한 SQL 명령문으로 행이나 열을 기준으로 필터링하여 네트워크 전송과 실제로 데이터를 거치고 필터링하는 클라이언트 측의 CPU를 줄일 수 있다.
- S3 Select를 사용하면 S3가 파일을 필터링하게하여 필요한 데이터만 검색할 수 있다.
- 최대 400% 빠르고 비용이 80% 저렴하다고 한다.
S3 User-Defined Object Metadata & S3 Object Tags
1. 사용자 기반 객체 메타데이터
객체를 만들고 업로드 할 때 메타데이터도 할당할 수 있다.
메타데이터는 객체에 연결된 키 값 쌍에 대한 이름이다.
사용자 정의 메타데이터를 업로드하면 x-amz-meta로 시작하는 이름을 부여해야 하는데 AWS에서 생성한 메타데이터가 있기 때문이다.
메타데이터는 객체를 검색할 때 검색할 수 있고, 객체 자체에 대한 정보를 제공한다.
2. S3 객체 태그
이 객체 태그는 S3 객체에 대한 키 값 쌍이 있다.
태그와 메타데이터를 분리한 이유는 실제로 태그를 사용해 권한 등을 세분화하거나 AWS 내의 특정 태그가 있는 특정 객체에 액세스를 부여할 수 있기 때문이다.
중요한 점은 객체 메타데이터나 객체 태그를 검색할 수 없다는 것이다.
그렇다면 이것이 왜 필요할까?
- 모든 메타데이터와 모든 태그를 DynamoDB의 검색할 수 있는 인덱스에 넣은 다음, 검색을 수행하면 검색 결과는 S3의 객체로 추출된다.
'AWS' 카테고리의 다른 글
Section 16. ECS, ECR 및 Fargate - AWS의 도커 (2) | 2024.10.13 |
---|---|
Section 14. S3 보안 (3) | 2024.10.03 |
Section 7. ELB+ASG (0) | 2024.10.02 |
Section 12. AWS CLI, SDK, IAM 역할 및 정책 (1) | 2024.09.26 |
Section 11. Amazon S3 (0) | 2024.09.26 |