Skip to content

S3 Event Notifications là gì?

Amazon S3 Event Notifications cho phép bạn thiết lập các Trigger khi có những sự kiện nhất định xảy ra trong bucket hoặc trên các đối tượng, ví dụ như khi một đối tượng mới được tạo, bị xóa, hoặc có thay đổi metadata.
Tính năng này giúp bạn xây dựng các hệ thống tự động xử lý dữ liệu, đồng bộ, hoặc giám sát.

Các trường hợp sử dụng phổ biến

  • Xử lý dữ liệu tải lên: Khi người dùng upload ảnh, tự động kích hoạt Lambda để xử lý hoặc nén ảnh.
  • Đồng bộ dữ liệu: Gửi thông báo để một ứng dụng khác tải dữ liệu mới.
  • Giám sát bảo mật: Phát hiện và ghi log khi có hành động xóa dữ liệu.
  • Tích hợp với các dịch vụ khác: Như SNS, SQS, hoặc AWS Lambda.

Các loại sự kiện hỗ trợ

Một số nhóm sự kiện thường dùng:

  • Object Created:
    • s3:ObjectCreated:Put
    • s3:ObjectCreated:Post
    • s3:ObjectCreated:Copy
    • s3:ObjectCreated:CompleteMultipartUpload
  • Object Removed:
    • s3:ObjectRemoved:Delete
    • s3:ObjectRemoved:DeleteMarkerCreated
  • Object Restore:
    • s3:ObjectRestore:Post
    • s3:ObjectRestore:Completed
  • Replication:
    • s3:Replication:OperationFailedReplication
    • s3:Replication:OperationCompletedReplication

Các đích (Destination) hỗ trợ

S3 Event Notifications có thể gửi thông báo tới:

  1. Amazon Simple Notification Service (SNS) - để publish message tới nhiều subscriber.
  2. Amazon Simple Queue Service (SQS) - để đưa message vào queue, xử lý tuần tự.
  3. AWS Lambda - để chạy hàm xử lý ngay lập tức khi có sự kiện.

Cách cấu hình S3 Event Notifications

Bước 1: Mở bucket cần cấu hình

  1. Vào Amazon S3 Console → Chọn bucket.
  2. Chuyển sang tab Properties.

Bước 2: Tạo Event Notification

  1. Kéo xuống phần Event notificationsCreate event notification.
  2. Nhập tên cho notification.
  3. Chọn sự kiện cần lắng nghe (ví dụ: All object create events).
  4. Chỉ định prefix hoặc suffix nếu muốn lọc đối tượng (ví dụ: chỉ .jpg).
  5. Chọn đích nhận (SNS, SQS hoặc Lambda).
  6. Lưu lại cấu hình.

Ví dụ: Kích hoạt Lambda khi có file mới

  • Tình huống: Khi upload ảnh mới vào images/, Lambda sẽ tự động tạo phiên bản thumbnail.
  • Các bước:
    1. Tạo hàm AWS Lambda xử lý ảnh.
    2. Cấp quyền cho S3 gọi Lambda (AWSLambdaS3ExecutionRole).
    3. Trong S3, tạo Event Notification:
      • Prefix: images/
      • Suffix: .jpg
      • Event: s3:ObjectCreated:*
      • Destination: Lambda function vừa tạo.

Lưu ý bảo mật và giới hạn

  • S3 cần quyền InvokeFunction cho Lambda, hoặc quyền publish/send message tới SNS/SQS.
  • Một bucket có thể có tối đa 100 event notifications.
  • Mỗi event notification chỉ gửi đến một đích duy nhất.
  • Nếu bạn cần gửi tới nhiều đích, có thể dùng SNS để fan-out.

Amazon EventBridge trong S3

Amazon EventBridge là event bus do AWS quản lý, cho phép bạn nhận, lọc và chuyển tiếp Event từ nhiều dịch vụ AWS (bao gồm S3) đến các dịch vụ hoặc ứng dụng khác. EventBridge giúp bổ sung cho cơ chế S3 Event Notifications truyền thống (gửi trực tiếp đến SNS, SQS, hoặc Lambda).

Với S3, EventBridge sẽ phát các Object-level events như:

  • Object Created (PUT, POST, COPY, CompleteMultipartUpload)
  • Object Deleted (DELETE)
  • Object Restore từ Glacier
  • vvv

So sánh EventBridge và Event Notifications

Tiêu chíS3 Event NotificationsEventBridge
Đích gửiSNS, SQS, LambdaBất kỳ dịch vụ AWS hoặc API bên ngoài thông qua Event Bus
Khả năng lọc sự kiệnGiới hạn, chủ yếu lọc theo prefix/suffixLọc theo nội dung chi tiết của sự kiện bằng event pattern
Tích hợp dịch vụ khácGiới hạn (chủ yếu 3 dịch vụ trên)Rất nhiều dịch vụ AWS + SaaS tích hợp
Quản lý tập trungKhông, mỗi bucket tự cấu hìnhCó thể gom sự kiện từ nhiều bucket vào 1 Event Bus
Chi phíMiễn phí (trừ phí dịch vụ nhận)Tính phí theo số sự kiện EventBridge xử lý