AWS S3

Bucket name convention (không bắt buộc)

  • không được bắt đầu bằng xn--, hoặc kết thúc bằng -s3alias
  • không có uppercase, underscore
  • 3-63 ký tự
  • không phải ip
  • bắt đầu bằng lowercase hoặc number

Mỗi 1 Object sẽ có các thông tin sau

  • content: max size content là 5TB (5000GB), Khi upload file lớn hơn 5GB phải sử dụng multi-part upload thành các part tối đa 5GB mỗi part.
  • Metadata
  • Tag
  • Version ID (nếu enable versioning)

Security

  • User-Based: cho phép các action thông qua policy
  • Resource-Based:
    • Bucket Policy
    • Object ACL
    • Bucket ACL

Một IAM principal có thể access S3 nếu IAM user-base hoặc resource-based được ALLOW và không có DENY nào.

Bucket settings for Block Public Access

  • Có thể setting ở level account
  • Nếu biết data trong bucket không bao giờ được phép public, có thể giữ nguyên setting này

Versioning

  • Nếu object trong bucket được tạo ra trước khi enable version, các objectsẽ có version là “null”
  • Tắt version không xoá các version trước đó của các object
  • Khi xoá Object sẽ sinh ra Delete marker. Có thể restore object bằng cách chọn item “Delete marker” rồi xoá

Replication

  • Phải enable versioning trước khi sử dụng ở cả source-target bucket
  • Asynchronous copy
  • Chỉ các Object mới được replicated
  • S3 Batch Replication: Replicate object đã tồn tại và object replicate failed trước đó
  • Cross-Region Replication (CRR): thường dùng cho backup ở level region
  • Same-Region Replication (SRR): thường dùng cho phân tích log, production – staging
  • Phải cung cấp permission phù hợp cho S3
  • Có thể replicate delete marker từ source tới target (optional)
  • Delete bằng version ID không replicate
  • Không có chaining (không có replicate từ bucket 1 replicate sang rồi bucket 2 rồi sang bucket 3)
  • Replicate cả Storage Class

S3 Transfer Acceleration

S3 Transfer Acceleration cải thiện tốc độ cả upload và download (cho các region khác nhau) cho các file trên 1 GB. Trường hợp dưới 1GB nên dùng CloudFront PUT/POST

Storage Class

S3 Intelligent-Tiering: tự động chuyển đổi Class dựa theo tần suất sử dụng object

  • Frequent Access tier (automatic): default tier
  • Infrequent Access tier (automatic): objects not accessed for 30 days
  • Archive Instant Access tier (automatic): objects not accessed for 90 days
  • Archive Access tier (optional): configurable from 90 days to 700+ days
  • Deep Archive Access tier (optional): config. from 180 days to 700+ days

Lifecycle Rules

Có thể tự động chuyển đổi Storage của object, xoá object, xoá incomplete Multi-Part upload để giảm chi phí với các object ít được truy cập sau một khoảng thời gian nhất định. Object có thể được filter bằng prefix hoặc Tag

Sử dụng S3 Analytic để phân tích, recommend Storage class (chỉ áp dụng cho Standard hoặc Standard IA), có thể mất từ 24 – 48h để lấy được kết quả phân tích.

Event Notifications

Khi có action trong bucket (create object, delete object, replication…), một event sẽ được gửi đến các service liên quan như SNS, SQS, Lambda

  • Có thể filter object muốn apply event
  • Phải tạo Resource (Access) Policy trong target để Bucket có thể send data tới target
    • SNS Resource (Access) Policy
    • SQS Resource (Access) Policy
    • Lambda Resource Policy

Tất cả các Event tới S3 Bucket cũng sẽ có trong EventBridge (cần enable trong S3 bucket), từ Event bridge có thể tích hợp các service khác ngoài mặc định của S3 là SQS, SNS, Lambda. Ngoài ra, khi tạo event bằng EventBridge thì có thể filter nhiều option hơn như metadata, size, name…

Performance

  • Latancy khoảng 100-200ms
  • Ít nhất 3500 PUT/COPY/POST/DELETE hoặc 5500 GET/HEAD với mỗi giây mỗi prefix trong 1 bucket
  • Không giới hạn prefix trong 1 bucket
  • Sử dụng multi-part upload để chia nhỏ thành nhiều phần khi upload
  • Sử dụng Byte-Range Fetch để download thành nhiều range với mỗi file, rồi gộp lại khi hoàn thành, hoặc sử dụng để get header của file (xxx byte đầu tiên của file)

S3 Select & Glacier Select

Sử dụng SQL để filter kết quả ở phía AWS

Object Tags & Metadata

  • Không thể search object theo metadata và tag
  • Object Metadata
    • Có thể chị định metadata khi upload file, dạng key-value
    • Tên phải bắt đầu bằng “x-amz-meta”
    • S3 lưu metadata key bằng lowercase
    • Có thể get metadata khi get object
  • Object Tag
    • Hữu ích khi cần phân quyền theo Tag, hoặc khi analytics (khi dùng S3 analytic group by tag)

Encryption

Khi upload sẽ sử dụng encryption đã setting mặc định trong bucket (SSE-S3 hoặc SSE-KMS), trường hợp muốn sử dụng loại khác phải chỉ định header. Từ bucket policy có thể setting phải sử dụng 1 loại encryption (Deny nếu PutObject có Header không giống expected)

  • SSE-S3 toàn quyền do S3 quản lý, AES-256
    • Phải set header “x-amz-server-side-encryption”: “AES256”
    • Mặc định enable cho bucket và object mới
  • SSE-KMS: sử dụng key KMS do customer tạo
    • Phải set header “x-amz-server-side-encryption”: “aws:kms”
    • Do phải sử dụng API KMS nên có thể giới hạn của API KMS (5500,10000,30000 requests/sec) sẽ ảnh hưởng tới S3, nhưng có thể request tăng lên
  • SSE-C
    • Vẫn là server-side encryption, nhưng key được cung cấp bởi customer
    • Phải sử dụng HTTPS để cung cấp key với mỗi request
  • Client-Side
    • Toàn bộ encryption sảy ra ở phía client

S3 cung cấp cả HTTP và HTTPS endpoint. Có thể bắt buộc user sử dụng HTTPS bằng cách sử dụng bucket policy, Deny nếu user không dùng HTTPS (aws:SecureTransport: false)

CORS

Khi bật Static website hosting, có thể cần setting CORS, cho phép các origin khác truy cập object trong bucket

MFA Delete

Khi sử dụng MFA Delete, Versioning phải được enable.MFA Delete chỉ có thể enable/disable bằng root account và thông qua CLI, SDK, S3 REST API. Các thao tác sau có thể yêu cầu MFA

  • Xoá vĩnh viễn object version
  • Ngừng versioning

Access log

Có thể log access s3 bucket tới một bucket khác cùng region

Pre-signed URL

Generate URL cho phép bất kỳ ai có URL đó có thể có quyền với Object (GET, PUT) trong bucket.

Object Integrity

  • Sử dụng header Content-MD5 khi upload để check xem upload thành công hay bị reject bởi S3
  • Sử dụng ETag để check version trên local có match với version đã có trên S3 không (compare MD5 ở local với ETag của object trên S3)
  • Hỗ trợ các checksum khác như: SHA-1, SHA-256, CRC32, CRC32C

Access Point

Quản lý quyền truy cập dựa theo prefix. Từ prefix sẽ thiết lập access point, có access point policy tương ứng cho phép user nào truy cập, những thao tác nào được phép. Mỗi Access Point có DNS riêng (public internet hoặc private (VPC)). Để sử dụng private Access Point thì cần thiết lập VPC Endpoint, thiết lập VPC Endpoint Policy cho phép truy cập target bucket và Access Point.

S3 Object Lambda

Thông qua Access Point rồi đến Lambda function, rồi đên S3 Object Lambda Access Point, return object đã được chỉnh sửa dựa theo request từ client đã gửi, vd như chuyển đổi format object, thêm thumbnail dựa trên user đã request image…

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *