Mục lục bài viết

Tổng quan

AWS Lambda giới thiệu khả năng sử dụng Customer managed keys (CMK) từ Amazon Key Management Service (KMS) để mã hóa tiêu chí lọc trong event source mappings (ESMs).

Tính năng này áp dụng cho việc lọc bản ghi từ hàng đợi hoặc luồng trước khi gửi đến hàm Lambda, cho phép kiểm soát bảo mật chi tiết hơn đối với tiêu chí lọc sự kiện.

Tính năng có sẵn tại tất cả Region thương mại của AWS có dịch vụ AWS Lambda.

Có thể sử dụng tính năng này khi tạo hoặc cập nhật event source mapping thông qua nhiều công cụ và dịch vụ của AWS như API, Management Console, CLI, SDK, CloudFormation và SAM.

Kiểm soát những sự kiện Lambda gửi đến function của bạn

Bạn có thể sử dụng lọc sự kiện để kiểm soát những bản ghi nào từ luồng dữ liệu (stream) hoặc hàng đợi (queue) mà Lambda sẽ gửi đến hàm của bạn. Ví dụ, bạn có thể thêm một bộ lọc để hàm của bạn chỉ xử lý các tin nhắn Amazon SQS chứa một số tham số dữ liệu nhất định. Lọc sự kiện chỉ hoạt động với một số ánh xạ nguồn sự kiện (event source mapping) nhất định. Bạn có thể thêm bộ lọc vào ánh xạ nguồn sự kiện cho các dịch vụ AWS sau đây:

  • Amazon DynamoDB
  • Amazon Kinesis Data Streams
  • Amazon MQ
  • Amazon Managed Streaming for Apache Kafka (Amazon MSK)
  • Apache Kafka tự quản lý
  • Amazon Simple Queue Service (Amazon SQS)

Theo mặc định, bạn có thể định nghĩa tối đa 5 bộ lọc khác nhau cho một ánh xạ nguồn sự kiện (event source mapping) duy nhất. Các bộ lọc của bạn được kết hợp với nhau theo phép logic OR. Nếu một bản ghi từ nguồn sự kiện của bạn thỏa mãn một hoặc nhiều bộ lọc của bạn, Lambda sẽ bao gồm bản ghi đó trong sự kiện tiếp theo mà nó gửi đến hàm của bạn. Nếu không có bộ lọc nào được thỏa mãn, Lambda sẽ loại bỏ bản ghi đó.

Cú pháp filter

Bảng bên dưới là mô tả:

  • Toán tử so sánh: Mô tả loại so sánh được thực hiện
  • Ví dụ thực tế: Cung cấp một ví dụ thực tế về cách sử dụng toán tử
  • Cú pháp: Hiển thị cú pháp giống JSON được sử dụng để triển khai quy tắc trong Lambda

Lưu ý rằng toán tử Exist chỉ hoạt động trên các node lá trong JSON nguồn sự kiện của bạn. Nó không khớp với node nút trung gian.

Ví dụ, với JSON sau đây, mẫu bộ lọc { “person”: { “address”: [ { “exists”: true } ] } } sẽ không tìm thấy kết quả khớp vì “address” là một nút trung gian.

{

  "person": {

    "name": "John Doe",

    "age": 30,

    "address": {

      "street": "123 Main St",

      "city": "Anytown",

      "country": "USA"

    }

  }

}

Thử nghiệm thêm tiêu chí lọc vào event source mapping bằng console

  1. Vào aws lambda function chọn Add trigger
  1. Ở phần Trigger configuration chọn loại trigger hỗ trợ filter event. Ở đây tôi chọn SQS
  1. Ở phần Filter criteria chọn Add

Lần này tôi muốn Lambda xử lý chỉ những record mà Metadata bằng 1 hay 2.

Sau khi thêm Filter criteria, nhấn Save

Chú ý:

Khi làm bằng aws console, không cần cung cấp Pattern key hay là dấu nháy kép

Ở ví dụ trên { “Metadata” : [ 1, 2 ] }  sẽ tương đương với FilterCriteria

{

   "Filters": [

      {

          "Pattern": "{ \"Metadata\" : [ 1, 2 ] }"

      }

   ]

}

Kết luận

Với việc AWS Lambda hỗ trợ mã hóa tiêu chí lọc cho event source mappings bằng Customer managed keys (CMK) cho phép các nhà phát triển tăng cường bảo mật cho các ứng dụng điều khiển bởi event.