728x90
반응형




Moving between Storage Classes

  • 수동으로 Object의 Storage Class를 옮길 수 있지만, LifeCycle Rules에 의해 자동으로도 옮겨질 수 있음




LifeCycle Rules

  • Transition Actions : 다른 Storage class로 이전하기 위한 Object 설정 (ex. 생성 60일 후에 Standard class로 이동)

  • Expiration Actions : 객체 삭제를 위한 Object 설정 (ex. 일정 만료기간이 지나면 Object 삭제, 특정 버전 삭제, 로그 삭제, 불완전한 객체 삭제 등)

  • 특정 경로나 Tag로 Object를 제한할 수 있음 (tag ex. 특정 부서의 object 등)


  • Scenario 1

  • Scenario 2




  • Storage Class Analysis : 매일 S3 Bucket의 상태를 확인하여 Storage class 추천 및 통계를 담은 report를 생성
    • Standard 및 Standard IA는 호환되지 않음
    • report 확인까지 24~48시간 소요될 수 있음
    • report를 통해 합리적인 lifecycle rules를 설정할 수 있음




Requester Pays

  • As-Is : S3 Bucket 소유자가 스토리지 및 데이터 전송에 대한 비용 모두 지불
  • To-Be (Requester Pays) : S3 Bucket 소유자는 스토리지 비용을, 데이터 요청자가 데이터 전송 비용을 지불 -> 데이터를 다른 사용자 계정과 공유할 때 유용 (요청자가 익명이면 안됨, AWS 인증 필요)




Event Notifications

  • Event : 객체 생성/삭제/복구, 복제 등과 같은 작업 (ex. S3 자체적 자동으로 image 썸네일 생성 등)

  • Event Notifications는 filtering이 가능 (ex. *.jpg object의 이벤트만 알림으로 받고 싶다 등)

  • Event Notifications의 대상은 설정 가능 (ex. SNS, SQS, Lambda Function 등)

  • 알림은 몇 초면 전송되나 간혹 몇 분이 걸리는 경우도 있음

  • properties - Event Notifications 에서 설정 가능


  • IAM Permissions : 알림을 전송하기 위해 IAM 권한(SNS, SQS 등)이 있어야 함 -> S3 IAM Role을 사용하는 것이 아닌 Target Resource Policy에 정의함 -> 우리와 같은 사용자가 S3 Bucket에 접근할 때, S3 Bucket 정책에 기반하는 것과 비슷하다고 보면 됨 -> 보통 target이 policy 설정

  • ex) S3 Event Notification을 SNS 토픽에 전송하기 위해 SNS Resource Policy를 할당해야 함 (SNS 토픽에 첨부하는 IAM Policy)




  • Amazon EventBridge : S3의 모든 event Notification이 EventBridge로 전송됨 -> EventBridge에 설정된 규칙을 기반으로 다른 AWS 서비스에 Event 전송 -> 직접 Event Notification를 전송하는 것보다 다양한 filtering 옵션 등과 같은 기능을 활용할 수 있음




S3 Performance

  • Amazon S3는 요청이 많으면 자동으로 확장됨 (지연시간 : 100~200ms)

  • Amazon S3는 prefix 및 초당 3500개의 PUT/COPY/POST/DELETE 요청과 5500개의 GET/HEAD 요청을 지원 -> 고성능

  • prefix 수에 제한이 없음 (prefix는 object의 path라 보면 됨) -> 4개의 prefix에 요청을 분산하면 초당 22000개의 GET/HEAD요청 처리 가능


  • 최적화 방법

  1. Multi-Part upload : 100MB넘는 파일 권장, 5GB넘는 파일은 필수 -> upload 병렬화 -> 전송속도 증가
  2. Transfer Acceleration : 파일을 AWS 엣지 로케이션으로 전송, 데이터를 target region의 Bucket에 저장 -> 빠른 AWS 네트워크 활용을 통해 전송속도 증가
    • Multi-Part upload와 동시 사용 가능




  1. Byte-Range Fetchs
    • 파일의 특정 바이트 범위를 가져와 GET 요청 병렬화 -> 실패의 경우 재시도 (복원력 높음) -> 다운로드 속도 증가
    • 파일의 첫 50바이트가 헤더라는 등 파일의 정보를 안다면, 파일에 대한 바이트 요청 범위를 설정할 수 있음




Select

  • 파일 검색 시, 검색 후 필터링 하면 불필요하게 많은 데이터를 검색하게 됨 -> Select 기능 사용
  • Select : SQL을 활용한 서버측 필터링 기능 -> 필요한 데이터만 필터링하여 조회 가능
  • 데이터 검색 및 필터링에 드는 CPU 비용 절약 가능
  • 적은 양의 데이터 전송에 따른 데이터 전송 속도 증가


S3 Batch Operations

  • S3 Batch Operations : 단일 요청으로 S3 Object에서 대량 작업 수행


  • Use cases

    1. 한 번에 많은 S3 Object의 메타데이터와 property 수정 가능
    2. S3 Bucket간 Object 복제 가능
    3. 암호화되지 않은 모든 Object를 암호화
    4. ACL(권한), tag 수정
    5. S3 Glacier에서 많은 object 복구
    6. Lambda 함수를 호출하여 S3 Batch Operations의 모든 객체에서 사용자 지정 작업 수행


  • 파라미터 : 객체 list, 수행할 작업 -> 객체 list는 S3 Inventory 기능을 활용하여 가져옴

  • S3 Inventory : S3 Select를 활용하여 적절히 객체를 filtering하여 전달해줌




  • Why? Batch Operations
    1. retry 관리 가능
    2. 진행상황 추적 및 작업완료 알림 가능
    3. 보고서 생성 가능


S3 Storage Lens

  • Storage Lens : 스토리지 이해/분석/최적화 하는 데 도움이 되는 서비스 -> 이상징후, 비용효율성 등 감지하여 전체 AWS조직을 보호 (30일 사용량 및 활용 메트릭 제공)

  • 데이터 수집 범위

    1. AWS 조직
    2. AWS 특정 계정
    3. regions
    4. buckets
    5. prefixs


  • 특징

  1. Custom Dashboard 제작 가능
  2. csv or parquet 형식으로 사용량과 메트릭에 관한 report를 S3 Bucket을 통해 받아볼 수 있음
  3. use cases
    1. 가장 빠르게 성장하거나 사용하지 않는 bucket이나 prefix 식별 (storage 관점)
    2. multi-part 업로드에 실패한 객체가 있는 bucket이 무엇인지? (storage 관점)
    3. 어떤 object를 더 저렴한 storage class로 옮길 수 있는지? (비용 관점)
    4. 데이터 보호 사례를 따르지 않는 bucket 식별 (데이터 보호 관점)
    5. Bucket이 어떤 object에 대한 소유권 설정을 하고있는지? (Bucket 소유권 관점)




  • Defualt Dashboard
  1. 무료 및 고급 지표에 대한 요약된 인사이트와 트렌드 확인 가능
  2. Multi-Region, Multi-Account의 모든 데이터 확인 가능
  3. Amazon S3에 의해 사전 구성
  4. 삭제는 불가하지만 비활성화는 가능




  • Metrics
  1. Summary Metrics : S3 Storage에 관한 insight
    • StorageBytes : Storage 및 Object의 크기를 파악 (모든 버전 포함 -> 실제로 차지하는 용량, 불완전한 multi-part object도 포함)
    • ObjectCount : Storage의 Object 수 파악
  2. Cost-Optimization Metrics : 비용에 관한 insight
    • NonCurrentVersionStorageBytes, IncompleteMultipartUploadStorageBytes, etc...
  3. Data-Protection Metrics : 데이터 보호에 관한 insight
    • VersioningEnableBucketCount : 버전관리 활성화 Bucket 수
    • MFADeleteEnableBucketCount, SSEKMSEnableBucketCount, CrossRegionReplicationRuleCount, etc...
  4. Access-management Metrics : S3 Bucket 소유권에 관한 insight
    • ObjectOwnershipBucketOwnerEnforcedBucketCount, etc...
  5. Event Metrics : S3 Event Notifications에 관한 insight
    • EventNotificationEnabledBucketCount : Event Notification이 구성된 Bucket의 수
  6. Performance Metrics : Transfer Acceleration에 관한 insight
    • TransferAccelerationEnabledBucketCount : Transfer Acceleration이 활성화된 Bucket의 수
  7. Activity Metircs
    • AllRequests, GetRequests, PutRequests, ListRequests, BytesDownloaded, etc...
  8. Detailed Status Code Metrics : HTTP 상태 코드에 관한 insight
    • 200OKStatusCount, 403ForbiddenErrorCount, 404NotFoundErrorCount, etc...


  • 무료 metric vs 유료 metric

반응형

'개발 > AWS' 카테고리의 다른 글

[AWS] CloudFront and Global Accelerator  (0) 2024.05.26
[AWS] Amazon S3 (3)  (0) 2024.05.25
[AWS] Amazon S3 (1)  (0) 2024.05.20
[AWS] Solution Architecture  (0) 2024.05.19
[AWS] Route 53  (0) 2024.05.18

+ Recent posts