[AWS] Chapter 10: AWS S3 Advanced

  • Kai
  • August 26, 2024

Xin chào các bạn, trong bài blogs này, chúng ta sẽ tìm hiểu về những tính năng nâng cao của AWS S3. Đây là một trong những dịch vụ lưu trữ đám mây phổ biến nhất hiện nay, và chúng ta sẽ cùng nhau tìm hiểu về những tính năng mà nó cung cấp.

I. Lifecycle Rules

Lifecycle Rules cho phép bạn tự động chuyển dữ liệu giữa các storage class khác nhau hoặc xóa dữ liệu sau một khoảng thời gian nhất định. Điều này giúp bạn tiết kiệm chi phí và quản lý dữ liệu một cách hiệu quả hơn.

1. Transition Actions (Hành động Chuyển Tiếp)

Transition Actions cho phép bạn cấu hình để tự động chuyển đổi dữ liệu sang một lớp lưu trữ khác sau một khoảng thời gian nhất định. Các ví dụ điển hình bao gồm:

  • Chuyển các đối tượng sang lớp lưu trữ Standard-IA sau 60 ngày kể từ ngày tạo.
  • Chuyển các đối tượng sang lớp lưu trữ Glacier để lưu trữ lâu dài sau 6 tháng.

2. Expiration Actions (Hành động Hết Hạn)

Expiration Actions cho phép bạn cấu hình để tự động xóa dữ liệu sau một khoảng thời gian nhất định. Ví dụ:

  • Các file log có thể được thiết lập để xóa sau 365 ngày.
  • Có thể sử dụng để xóa các phiên bản cũ của file (nếu bật tính năng versioning).
  • Có thể sử dụng để xóa các upload không hoàn chỉnh trong quá trình tải lên nhiều phần (Multi-Part uploads).

3. Cấu hình Quy Tắc

  • Quy tắc có thể được tạo ra cho một tiền tố (prefix) cụ thể. Ví dụ: s3://mybucket/mp3/*.
  • Quy tắc cũng có thể được tạo ra cho các đối tượng có thẻ (Tags) cụ thể. Ví dụ: Department: Finance.

II. Analytics

Amazon S3 Analytics – Storage Class Analysis là một công cụ mạnh mẽ giúp bạn tối ưu hóa việc lưu trữ dữ liệu bằng cách cung cấp phân tích chi tiết về cách sử dụng các lớp lưu trữ. Các đặc điểm chính của công cụ này bao gồm:

  • Tư vấn chuyển đổi lớp lưu trữ: Công cụ này giúp bạn đưa ra quyết định khi nào cần chuyển đổi các đối tượng sang lớp lưu trữ phù hợp hơn, như từ Standard sang Standard-IA.

  • Giới hạn phân tích: Tuy nhiên, cần lưu ý rằng công cụ này không hoạt động với các lớp lưu trữ One-Zone-IA hoặc Glacier. Điều này có nghĩa là bạn chỉ nhận được khuyến nghị cho hai lớp lưu trữ phổ biến nhất là StandardStandard-IA.

  • Cập nhật báo cáo hàng ngày: Báo cáo phân tích sẽ được cập nhật hàng ngày, nhưng cần khoảng 24 đến 48 giờ để bắt đầu thấy dữ liệu phân tích sau khi bạn kích hoạt tính năng này.

  • Bước đầu để xây dựng Quy Tắc Vòng Đời: Đây là bước đầu tiên quan trọng trong việc xây dựng hoặc cải thiện các quy tắc vòng đời (Lifecycle Rules) của bạn. Sử dụng phân tích này, bạn có thể đưa ra các quyết định sáng suốt về việc chuyển đổi dữ liệu để tối ưu hóa chi phí và hiệu suất.

III. Requester Pays

Thông thường, chủ sở hữu bucket sẽ chịu trách nhiệm thanh toán tất cả các chi phí lưu trữ và truyền dữ liệu liên quan đến bucket của họ trên Amazon S3. Tuy nhiên, với cơ chế Requester Pays:

  • Người yêu cầu trả phí: Thay vì chủ sở hữu bucket, người yêu cầu sẽ chịu trách nhiệm thanh toán chi phí cho các yêu cầu truy xuất dữ liệu và tải xuống dữ liệu từ bucket. Điều này bao gồm các chi phí liên quan đến việc tải xuống dữ liệu từ bucket.

  • Ứng dụng thực tế: Cơ chế này rất hữu ích khi bạn muốn chia sẻ các tập dữ liệu lớn với các tài khoản AWS khác mà không phải chịu toàn bộ chi phí. Điều này có thể đặc biệt quan trọng khi làm việc với các dự án nghiên cứu hoặc dữ liệu công khai.

  • Yêu cầu xác thực: Để sử dụng bucket theo cơ chế Requester Pays, người yêu cầu phải được xác thực trong AWS. Điều này có nghĩa là các yêu cầu ẩn danh (anonymous requests) sẽ không được chấp nhận.

Việc áp dụng cơ chế Requester Pays giúp giảm gánh nặng chi phí cho chủ sở hữu bucket, đồng thời cung cấp một phương thức linh hoạt để quản lý chi phí liên quan đến việc chia sẻ dữ liệu lớn trong môi trường AWS.

IV. Event Notifications

S3 Event Notifications là một tính năng mạnh mẽ trong Amazon S3 cho phép bạn cấu hình các thông báo tự động khi có các sự kiện nhất định xảy ra trong bucket của bạn. Các sự kiện này bao gồm:

Loại sự kiện Mô tả
s3:TestEvent Khi một thông báo được kích hoạt, Amazon S3 sẽ gửi một thông báo thử nghiệm để đảm bảo rằng chủ đề tồn tại và chủ sở hữu bucket có quyền xuất bản chủ đề đã chỉ định. Nếu việc kích hoạt thông báo thất bại, bạn sẽ không nhận được thông báo thử nghiệm.
s3:ObjectCreated:* Các hoạt động API của Amazon S3 như PUT, POST và COPY có thể tạo ra một đối tượng. Với các loại sự kiện này, bạn có thể kích hoạt thông báo khi một đối tượng được tạo bằng một hoạt động API cụ thể. Hoặc bạn có thể sử dụng loại sự kiện s3:ObjectCreated:* để yêu cầu thông báo bất kể API nào được sử dụng để tạo đối tượng.
s3:ObjectCreated:Put
s3:ObjectCreated:Post
s3:ObjectCreated:Copy
s3:ObjectCreated:CompleteMultipartUpload Bao gồm các đối tượng được tạo bằng UploadPartCopy cho các hoạt động Copy.
s3:ObjectRemoved:* Bằng cách sử dụng các loại sự kiện ObjectRemoved, bạn có thể kích hoạt thông báo khi một đối tượng hoặc một loạt đối tượng bị xóa khỏi bucket.
s3:ObjectRemoved:Delete Bạn có thể yêu cầu thông báo khi một đối tượng bị xóa hoặc một đối tượng có phiên bản bị xóa vĩnh viễn bằng cách sử dụng loại sự kiện s3:ObjectRemoved:Delete. Hoặc bạn có thể yêu cầu thông báo khi một dấu xóa được tạo cho một đối tượng có phiên bản bằng cách sử dụng s3:ObjectRemoved:DeleteMarkerCreated.
s3:ObjectRemoved:DeleteMarkerCreated Các thông báo sự kiện này không cảnh báo bạn về các xóa tự động từ cấu hình vòng đời hoặc từ các hoạt động thất bại.
s3:ObjectRestore:* Bằng cách sử dụng các loại sự kiện ObjectRestore, bạn có thể nhận thông báo cho việc khởi tạo và hoàn thành sự kiện khi khôi phục các đối tượng từ lớp lưu trữ S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive, S3 Intelligent-Tiering Archive Access, và S3 Intelligent-Tiering Deep Archive Access. Bạn cũng có thể nhận thông báo khi bản sao khôi phục của một đối tượng hết hạn.
s3:ObjectRestore:Post Loại sự kiện s3:ObjectRestore:Post thông báo cho bạn về việc khởi tạo khôi phục đối tượng.
s3:ObjectRestore:Completed Loại sự kiện s3:ObjectRestore:Completed thông báo cho bạn về việc hoàn thành khôi phục.
s3:ObjectRestore:Delete Loại sự kiện s3:ObjectRestore:Delete thông báo cho bạn khi bản sao tạm thời của một đối tượng khôi phục hết hạn.
s3:ReducedRedundancyLostObject Bạn nhận được thông báo này khi Amazon S3 phát hiện rằng một đối tượng của lớp lưu trữ RRS bị mất.
s3:Replication:* Bằng cách sử dụng các loại sự kiện Replication, bạn có thể nhận thông báo cho các cấu hình sao chép có S3 Replication metrics hoặc S3 Replication Time Control (S3 RTC) được kích hoạt. Bạn có thể theo dõi tiến trình sao chép từng phút bằng cách theo dõi byte chờ, hoạt động chờ và độ trễ sao chép.
s3:Replication:OperationFailedReplication Loại sự kiện s3:Replication:OperationFailedReplication thông báo cho bạn khi một đối tượng đủ điều kiện sao chép không thể sao chép.
s3:Replication:OperationMissedThreshold Loại sự kiện s3:Replication:OperationMissedThreshold thông báo cho bạn khi một đối tượng đủ điều kiện sao chép vượt quá ngưỡng 15 phút cho sao chép.
s3:Replication:OperationReplicatedAfterThreshold Loại sự kiện s3:Replication:OperationReplicatedAfterThreshold thông báo cho bạn khi một đối tượng đủ điều kiện sao chép sử dụng S3 Replication Time Control sao chép sau ngưỡng 15 phút.
s3:Replication:OperationNotTracked Loại sự kiện s3:Replication:OperationNotTracked thông báo cho bạn khi một đối tượng đủ điều kiện sao chép sử dụng S3 Replication Time Control nhưng không còn được theo dõi bởi các chỉ số sao chép.
s3:LifecycleExpiration:* Bằng cách sử dụng các loại sự kiện LifecycleExpiration, bạn có thể nhận thông báo khi Amazon S3 xóa một đối tượng dựa trên cấu hình S3 Lifecycle của bạn.
s3:LifecycleExpiration:Delete Loại sự kiện s3:LifecycleExpiration:Delete thông báo cho bạn khi một đối tượng trong một bucket không phiên bản bị xóa. Nó cũng thông báo cho bạn khi một phiên bản đối tượng bị xóa vĩnh viễn bởi một cấu hình S3 Lifecycle.
s3:LifecycleExpiration:DeleteMarkerCreated Loại sự kiện s3:LifecycleExpiration:DeleteMarkerCreated thông báo cho bạn khi S3 Lifecycle tạo một dấu xóa khi một phiên bản hiện tại của một đối tượng trong bucket có phiên bản bị xóa.
s3:LifecycleTransition Bạn nhận được thông báo này khi một đối tượng được chuyển sang một lớp lưu trữ Amazon S3 khác bởi một cấu hình S3 Lifecycle.
s3:IntelligentTiering Bạn nhận được thông báo này khi một đối tượng trong lớp lưu trữ S3 Intelligent-Tiering chuyển sang lớp Archive Access hoặc Deep Archive Access.
s3:ObjectTagging:* Bằng cách sử dụng các loại sự kiện ObjectTagging, bạn có thể kích hoạt thông báo khi một thẻ đối tượng được thêm hoặc xóa khỏi một đối tượng.
s3:ObjectTagging:Put Loại sự kiện s3:ObjectTagging:Put thông báo cho bạn khi một thẻ được PUT trên một đối tượng hoặc một thẻ hiện có được cập nhật.
s3:ObjectTagging:Delete Loại sự kiện s3:ObjectTagging:Delete thông báo cho bạn khi một thẻ bị xóa khỏi một đối tượng.
s3:ObjectAcl:Put Bạn nhận được thông báo này khi một ACL được PUT trên một đối tượng hoặc khi một ACL hiện có được thay đổi. Một sự kiện không được tạo ra khi một yêu cầu không dẫn đến thay đổi ACL của đối tượng.
  • S3 Event Notifications có thể được gửi đến các nguồn khác nhau như Amazon SNS, Amazon SQS, AWS Lambda và cả Event Bridge. Sau đây là một số ví dụ về IAM policy cho các destination

SNS:

{
  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "Example SNS topic policy",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "SNS:Publish"
      ],
      "Resource": "SNS-topic-ARN",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:bucket-name"
        },
        "StringEquals": {
          "aws:SourceAccount": "bucket-owner-account-id"
        }
      }
    }
  ]
} 

SQS:

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:Region:account-id:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-account-id"
                }
            }
        }
    ]
}

Để có thể có cái nhìn tổng quát hơn, thì các cậu có thể truy cập vào các tài liệu sau của AWS để tìm hiểu rõ hơn:

V. Select & Glacier Select

  • Truy vấn dữ liệu nhỏ hơn bằng cách sử dụng SQL với bộ lọc phía máy chủ:

    • Bạn có thể truy vấn dữ liệu trực tiếp từ S3 hoặc Glacier mà không cần phải tải xuống toàn bộ đối tượng. Điều này giúp giảm lượng dữ liệu cần truyền tải qua mạng, đồng thời giảm chi phí CPU phía máy khách.
  • Có thể lọc theo hàng và cột (sử dụng câu lệnh SQL đơn giản):

    • Bạn có thể chỉ định cụ thể những hàng và cột cần truy vấn, điều này giúp tối ưu hóa quá trình xử lý dữ liệu và giảm thiểu tài nguyên sử dụng.

Bạn có thể truy cập vào đây để có thể dễ hình dung hơn: S3 Select and Glacier Select – Retrieving Subsets of Objects

VI. S3 Batch Operations

  • Thực hiện các thao tác hàng loạt trên các đối tượng S3 hiện có chỉ với một yêu cầu:

    • Các tác vụ bao gồm:
      • Sửa đổi metadata và thuộc tính của đối tượng
      • Sao chép các đối tượng giữa các bucket S3
      • Mã hóa các đối tượng chưa được mã hóa
      • Sửa đổi ACLs, tags
      • Khôi phục các đối tượng từ S3 Glacier
      • Kích hoạt chức năng Lambda để thực hiện hành động tùy chỉnh trên mỗi đối tượng
  • Một công việc (job) bao gồm:

    • Danh sách các đối tượng, hành động cần thực hiện, và các tham số tùy chọn.
  • S3 Batch Operations quản lý việc thử lại, theo dõi tiến độ, gửi thông báo hoàn thành và tạo báo cáo:

    • Bạn có thể sử dụng S3 Inventory để lấy danh sách đối tượng và sử dụng S3 Select để lọc các đối tượng của mình.

VII. S3 Storage Lens

  • Hiểu, phân tích và tối ưu hóa lưu trữ trên toàn bộ tổ chức AWS:

    • Giúp bạn phát hiện ra các bất thường, xác định các cơ hội tối ưu chi phí, và áp dụng các thực hành bảo vệ dữ liệu tốt nhất trên toàn bộ tổ chức AWS. Cung cấp các số liệu về sử dụng và hoạt động trong 30 ngày.
  • Tổng hợp dữ liệu cho toàn bộ tổ chức, các tài khoản cụ thể, vùng, bucket hoặc tiền tố:

    • Giúp bạn có cái nhìn tổng quan về việc sử dụng lưu trữ trên nhiều phạm vi khác nhau.
  • Bảng điều khiển mặc định hoặc tự tạo bảng điều khiển của riêng bạn:

    • Bạn có thể cấu hình để xuất số liệu hàng ngày vào một bucket S3 dưới dạng CSV hoặc Parquet.
  • Hình dung các thông tin chi tiết tóm tắt và xu hướng cho cả số liệu miễn phí và nâng cao:

    • Bảng điều khiển mặc định hiển thị dữ liệu từ nhiều vùng và nhiều tài khoản.
  • Được cấu hình trước bởi Amazon S3:

    • Bảng điều khiển này không thể bị xóa, nhưng có thể bị vô hiệu hóa nếu cần.
  • Summary Metrics:

    • Cung cấp các thông tin tổng quan về lưu trữ S3 của bạn, ví dụ như StorageBytes, ObjectCount.
    • Sử dụng các số liệu này để xác định các bucket hoặc tiền tố tăng trưởng nhanh nhất hoặc ít được sử dụng.
  • Cost-Optimization Metrics:

    • Cung cấp thông tin chi tiết để quản lý và tối ưu hóa chi phí lưu trữ của bạn, chẳng hạn như NonCurrentVersionStorageBytes, IncompleteMultipartUploadStorageBytes.
    • Sử dụng chúng để xác định các đối tượng có thể chuyển sang lớp lưu trữ có chi phí thấp hơn.
  • Data Protection Metrics:

    • Cung cấp thông tin về các tính năng bảo vệ dữ liệu, chẳng hạn như VersioningEnabledBucketCount, MFADeleteEnabledBucketCount, SSEKMSEnabledBucketCount, CrossRegionReplicationRuleCount.
    • Sử dụng chúng để xác định các bucket không tuân thủ các thực hành tốt nhất về bảo vệ dữ liệu.
  • Access-management Metrics:

    • Cung cấp thông tin chi tiết về quyền sở hữu đối tượng S3, chẳng hạn như ObjectOwnershipBucketOwnerEnforcedBucketCount.
    • Sử dụng chúng để xác định các thiết lập quyền sở hữu đối tượng mà các bucket của bạn đang sử dụng.
  • Event Metrics:

    • Cung cấp thông tin chi tiết về thông báo sự kiện S3, chẳng hạn như EventNotificationEnabledBucketCount.
    • Điều này giúp bạn nhận biết được những bucket nào đã được cấu hình thông báo sự kiện S3.
  • Performance Metrics:

    • Cung cấp thông tin về S3 Transfer Acceleration, chẳng hạn như TransferAccelerationEnabledBucketCount.
    • Điều này giúp bạn nhận biết những bucket nào đã được bật S3 Transfer Acceleration.
  • Activity Metrics:

    • Cung cấp thông tin về cách lưu trữ của bạn được yêu cầu, chẳng hạn như AllRequests, GetRequests, PutRequests, ListRequests, BytesDownloaded.
  • Detailed Status Code Metrics:

    • Cung cấp thông tin về mã trạng thái HTTP, chẳng hạn như 200OKStatusCount, 403ForbiddenErrorCount, 404NotFoundErrorCount.
    • Điều này giúp bạn nhận biết về các yêu cầu thành công hoặc thất bại đối với các đối tượng trong bucket của mình.

Vâng, vậy là mình đã đi qua được bài blogs về những tính năng nâng cao của AWS S3. Tuy nhiên sẽ còn có phần tiếp theo cho S3 Advanced nữa Hẹn gặp lại các bạn ở những bài viết tiếp theo trong series về AWS nhé!

Bài Viết Liên Quan

[AWS] Chapter 9: AWS S3

  • Kai
  • August 25, 2024

Xin chào tất cả bạn, lại là mình đây ạ. Trong chương này, chúng ta sẽ tìm hiểu về Amazon S3, một dịch vụ lưu trữ đám mây phổ biến của AWS.

Đọc Thêm

[AWS] Chapter 8: AWS ELB, ASG Hands On

  • Kai
  • August 25, 2024

Trong bài blogs này, chúng ta sẽ thực hành với AWS Elastic Load Balancer (ELB) và Auto Scaling Group (ASG).

Đọc Thêm

[AWS] Chapter 7: AWS ELB - Elastic Load Balancing & Auto Scaling Groups

  • Kai
  • August 25, 2024

Xin chào các bạn, hôm nay mình sẽ tiếp tục với series bài viết về AWS. Trong bài viết này, mình sẽ giới thiệu với các bạn về AWS ELB - Elastic Load Balancing.

Đọc Thêm