Amazon EventBridge (formerly CloudWatch Events)
Đây là các tùy chọn cho các Amazon CloudWatch Events để thực hiện các hành động khác nhau khi một sự kiện xảy ra.
- Schedule (Lịch trình): Cho phép lập lịch các tác vụ định kỳ dựa trên biểu thức Cron.
- Event Pattern (Mẫu sự kiện): Cho phép bạn định nghĩa các quy tắc sự kiện để phản ứng với các hoạt động trong dịch vụ AWS.
- Trigger Lambda functions (Kích hoạt các hàm Lambda): Cho phép gọi các hàm AWS Lambda khi sự kiện xảy ra.
- Send SQS/SNS messages (Gửi tin nhắn SQS/SNS): Cho phép gửi tin nhắn đến Amazon Simple Queue Service (SQS) hoặc Amazon Simple Notification Service (SNS) khi sự kiện xảy ra.
Amazon EventBridge Rules
Amazon EventBridge là một dịch vụ quản lý sự kiện được cung cấp bởi AWS. Nó cho phép bạn tạo, quản lý và định tuyến các sự kiện từ các nguồn khác nhau (chẳng hạn như EC2, S3, Lambda) đến các đích khác nhau (chẳng hạn như Lambda, SQS, SNS). Amazon EventBridge Rules là một tính năng của dịch vụ này, cho phép bạn xác định một bộ lọc (filter) cho các sự kiện cụ thể và chỉ định các hành động (actions) được thực hiện khi các sự kiện đó xảy ra. Bạn có thể định tuyến sự kiện tới các hệ thống khác nhau hoặc thực thi một số tác vụ xử lý dữ liệu tự động dựa trên các sự kiện đó.
Amazon EventBridge
Amazon EventBridge là một dịch vụ quản lý các sự kiện trong hệ thống AWS, cho phép bạn tạo ra các quy tắc (rules) để phản ứng và thực thi các hành động khi có các sự kiện xảy ra.
Event buses trong Amazon EventBridge có thể được truy cập bởi các tài khoản AWS khác bằng cách sử dụng các chính sách dựa trên tài nguyên. Bạn có thể lưu trữ các sự kiện (tất cả hoặc các sự kiện lọc) được gửi đến một event bus (vô thời hạn hoặc trong một khoảng thời gian nhất định). Ngoài ra, Amazon EventBridge cung cấp khả năng phát lại các sự kiện đã được lưu trữ trước đó.
Tóm lại, các tính năng này giúp Amazon EventBridge trở thành một giải pháp quản lý các sự kiện linh hoạt và hiệu quả trong các hệ thống AWS, cho phép bạn dễ dàng lưu trữ, truy cập và xử lý các sự kiện đã xảy ra trước đó.
Amazon EventBridge – Schema Registry
Amazon EventBridge là một dịch vụ quản lý sự kiện trên nền tảng đám mây của AWS, cho phép các tài nguyên AWS khác nhau tương tác và gửi các sự kiện (events) cho nhau.
Amazon EventBridge – Schema Registry là một tính năng bổ sung của EventBridge, cho phép tự động phân tích các sự kiện trên bus để suy ra cấu trúc (schema) của chúng. Sau đó, thông qua Schema Registry, bạn có thể tạo ra mã cho ứng dụng của mình, biết trước cách dữ liệu được cấu trúc trên bus.
Mã này sẽ giúp ứng dụng của bạn có thể hiểu được các sự kiện được gửi đến và xử lý chúng một cách chính xác. Schema có thể được quản lý và theo dõi phiên bản để đảm bảo tính ổn định và tương thích giữa các phiên bản.
Amazon EventBridge – Resource-based Policy
Amazon EventBridge – Resource-based Policy là tính năng cho p hép quản lý quyền truy cập cho một Event Bus cụ thể. Ví dụ, bạn có thể cho phép hoặc từ chối sự kiện từ một tài khoản AWS khác hoặc khu vực AWS khác. Tính năng này rất hữu ích khi bạn muốn tổng hợp tất cả các sự kiện từ tổ chức AWS của mình vào một tài khoản AWS hoặc khu vực AWS duy nhất.
Amazon EventBridge – Hands On
Đầu tiên hãy vào Events › Go to Amazon EventBridge.
Bạn sẽ vào được Amazon EventBridge › Event buses và bạn sẽ nhìn thấy 1 sự kiện default như hình dưới.
Tai Create event bus bạn hãy đặt tên cho event bus và Archive name. Tại phần Event archive và schema discovery hãy enable nó lên.
- Event archive: Lưu trữ các sự kiện đã được gửi trên bus sự kiện này. Thời gian lưu trữ mặc định là “Không giới hạn”.
- Schema discovery: Tự động xác định các schema (cấu trúc dữ liệu) từ các sự kiện chạy trên bus sự kiện này.
Phần Resource-based policy khi khởi tạo EventBridge Event Bus được sử dụng để quản lý các quyền truy cập đối với Bus sự kiện cụ thể đó. Bằng cách sử dụng Resource-based policy, bạn có thể cho phép hoặc từ chối các sự kiện từ tài khoản AWS hoặc khu vực AWS khác được gửi đến Bus sự kiện đó. Điều này giúp đảm bảo an ninh và quản lý các sự kiện được gửi đến Bus sự kiện của bạn một cách chặt chẽ và hiệu quả hơn.
Ví dụ, bạn có thể sử dụng Resource-based policy để tổng hợp tất cả các sự kiện từ tổ chức AWS của bạn trong một tài khoản hoặc khu vực AWS cụ thể. Điều này giúp cho việc quản lý các sự kiện trở nên dễ dàng hơn, giảm thiểu việc mất mát sự kiện và nâng cao tính bảo mật của hệ thống.
Nếu bạn để trống phần Resource-based policy khi tạo event bus, thì tất cả các tài nguyên AWS đều có thể gửi sự kiện vào event bus đó mà không cần phải xác thực quyền hạn. Điều này có thể tạo ra các vấn đề về bảo mật, vì bất kỳ ai cũng có thể đăng ký gửi sự kiện vào event bus của bạn. Vì vậy, để đảm bảo an toàn và bảo mật, bạn nên xác định chính xác những tài nguyên nào được phép gửi sự kiện vào event bus bằng cách sử dụng Resource-based policy.
Do là demo nên mình sẽ để trống phần Resource-based policy, kéo xuống dưới và bấm Create.
Như vậy bạn đã tạo thêm được 1 Custom event bus.
Salesforce, Salesforce via Amazon AppFlow, và Auth0 đều là các nhà cung cấp dịch vụ đám mây (cloud service provider) cung cấp các dịch vụ về quản lý khách hàng (customer relationship management – CRM), quản lý định danh và quyền truy cập (identity and access management – IAM) cho các ứng dụng và hệ thống.
- Salesforce là một trong những nền tảng CRM phổ biến nhất thế giới, cung cấp các dịch vụ liên quan đến quản lý khách hàng, marketing, bán hàng, hỗ trợ khách hàng và phân tích dữ liệu.
- Salesforce via Amazon AppFlow là một dịch vụ tích hợp được cung cấp bởi Amazon Web Services (AWS) để kết nối các ứng dụng và dịch vụ của Salesforce với các dịch vụ AWS khác.
- Auth0 là một nền tảng IAM cung cấp các dịch vụ liên quan đến đăng nhập, xác thực, quản lý định danh và quyền truy cập cho các ứng dụng và hệ thống.
Các nhà cung cấp như Salesforce, Salesforce via Amazon AppFlow và Auth0 không thuộc AWS. Tuy nhiên, EventBridge hỗ trợ tích hợp với các nhà cung cấp này thông qua partner event sources, cho phép người dùng tự do lựa chọn và kết hợp các dịch vụ và ứng dụng khác nhau để đáp ứng nhu cầu của mình.
Nếu bạn không muốn sử dụng các nhà cung cấp này thì bạn hoàn toàn có thể sử dụng EventBridge mà không sử dụng các nhà cung cấp này. Bạn có thể tạo các luật (rules) cho các sự kiện (events) do các dịch vụ AWS tạo ra, hoặc gửi các sự kiện (events) tới các đích (targets) AWS như Lambda function, SQS queue, SNS topic, Kinesis Data Streams, và nhiều hơn nữa. Ngoài ra, bạn cũng có thể gửi các sự kiện đến các đích (targets) được tự động tạo bởi AWS như CloudWatch Logs, S3 buckets hoặc EventBridge API Destination.
Tiếp theo chúng ta sẽ thiết lập các rule cho nó bằng cách bấm vào Create rule.
“Enable the rule on the selected event” là một tính năng trong Amazon EventBridge cho phép bạn kích hoạt một rule (quy tắc) trên một loại sự kiện cụ thể trong event bus. Nếu một sự kiện được phát hành trên event bus và khớp với pattern hoặc schedule đã được đặt trong rule đó, rule sẽ được kích hoạt và trigger các hành động liên quan đến nó (ví dụ như gửi thông báo, chạy Lambda function, v.v.). Tính năng này giúp cho việc quản lý và xử lý sự kiện trở nên linh hoạt và hiệu quả hơn.
Rule with an event pattern và Schedule là các cách để định nghĩa các quy tắc (rule) để EventBridge sử lý sự kiện (event) được gửi đến từ các dịch vụ khác nhau trong AWS.
- Rule với event pattern cho phép xác định một tập hợp các sự kiện mà bạn muốn theo dõi và đưa ra hành động tương ứng khi có sự kiện này xảy ra. Ví dụ, bạn có thể thiết lập một rule để đưa ra cảnh báo khi có người dùng đăng nhập vào tài khoản AWS của bạn.
- Schedule trong rule cho phép xác định một thời điểm hoặc chu kỳ thời gian để thực hiện một hành động nào đó. Ví dụ, bạn có thể thiết lập một rule để tự động khởi động một EC2 instance vào mỗi sáng thứ Hai.
Với cả hai cách định nghĩa quy tắc này, khi sự kiện được gửi đến cho EventBridge, nó sẽ so khớp với quy tắc và thực hiện hành động được xác định trong quy tắc đó.
Các tùy chọn “AWS services”, “Other” và “All events” trong Event source được sử dụng để xác định nguồn sự kiện cho AWS EventBridge rule.
- AWS services: cho phép bạn chọn một hoặc nhiều dịch vụ AWS cụ thể để xác định các sự kiện cụ thể liên quan đến các dịch vụ đó.
- Other: cho phép bạn chỉ định các nguồn sự kiện không phải là AWS, chẳng hạn như một ứng dụng hoặc hệ thống của bên thứ ba.
- All events: cho phép bạn nhận tất cả các sự kiện đến từ tất cả các nguồn, bao gồm cả AWS và các nguồn không phải AWS.
Việc chọn nguồn sự kiện đúng sẽ giúp EventBridge chọn các sự kiện cụ thể mà bạn muốn xử lý với rule của mình.
Tính năng “Sample events” cho phép bạn xem các sự kiện (events) mẫu (sample events) được tạo ra bởi các dịch vụ AWS hoặc bởi người dùng trong tài khoản của mình. Bạn có thể lọc các sự kiện mẫu theo nguồn sự kiện (event source) và loại sự kiện (event type), hoặc bằng từ khóa để tìm các sự kiện mà bạn quan tâm. Tính năng này giúp bạn hiểu rõ hơn về cấu trúc và nội dung của các sự kiện được tạo ra bởi các dịch vụ AWS, và có thể sử dụng thông tin này để cấu hình các quy tắc (rules) trong Amazon EventBridge.
Event trên là một thông báo về việc thay đổi trạng thái của một instance EC2 trên tài khoản AWS với ID là “123456789012”.
Cụ thể hơn, thông tin về event bao gồm:
- version: phiên bản của event
- id: ID duy nhất của event
- detail-type: loại chi tiết của event, ở đây là “EC2 Instance State-change Notification” – thông báo về việc thay đổi trạng thái của EC2 instance
- source: nguồn tạo ra event, ở đây là “aws.ec2” – tức Amazon EC2
- account: ID của tài khoản AWS tương ứng với EC2 instance đó
- time: thời điểm event được tạo ra
- region: khu vực AWS nơi instance đang chạy
- resources: danh sách các tài nguyên liên quan đến event, ở đây là ARN (Amazon Resource Name) của instance EC2 có ID là “i-abcd2222”
- detail: chứa các chi tiết về event, ở đây bao gồm ID của instance EC2 và trạng thái mới của nó (stopping – đang dừng lại).
“Sample event matched the event pattern” và “Sample event did not match the event pattern” là các thông báo được hiển thị khi bạn đang tạo hoặc chỉnh sửa một AWS EventBridge rule với một mẫu sự kiện (event pattern).
Khi bạn đang tạo hoặc chỉnh sửa một rule và thêm một event pattern, AWS EventBridge sẽ kiểm tra xem có bất kỳ sự kiện nào trong bộ sưu tập các sự kiện mẫu phù hợp với event pattern đó hay không. Nếu có sự kiện phù hợp, EventBridge sẽ hiển thị thông báo “Sample event matched the event pattern” để xác nhận rằng mẫu của bạn hoạt động đúng.
Ngược lại, nếu không có sự kiện nào phù hợp với mẫu của bạn, EventBridge sẽ hiển thị thông báo “Sample event did not match the event pattern” để báo cho bạn biết rằng mẫu của bạn có thể cần được điều chỉnh để phù hợp với các sự kiện trong bộ sưu tập của bạn.
Đoạn JSON đầu tiên mô tả một sự thay đổi trạng thái của một EC2 instance từ “running” sang “stopping”.
Đoạn JSON thứ hai mô tả một event pattern được định nghĩa để chỉ định rằng một rule sẽ được kích hoạt khi có bất kỳ sự thay đổi nào liên quan đến trạng thái của EC2 instance với “state” là “stopped” hoặc “terminated”, được gửi từ “aws.ec2” source.
Vì event đầu tiên trùng với event pattern được định nghĩa trong rule, nó sẽ trả về kết quả “Sample event matched the event pattern.”
Vây giờ mình sẽ đổi trạng thái của nó từ ‘stopped’ và ‘terminated’ sang ‘running’.
Đoạn JSON đầu tiên có trường “state” là “running” trong khi đoạn thứ hai chỉ chấp nhận các sự kiện có trạng thái là “stopped” hoặc “terminated”. Do đó, khi kiểm tra theo mẫu sự kiện, đoạn JSON đầu tiên khớp với mẫu, trong khi đoạn JSON thứ hai không khớp và trả về kết quả “Sample event did not match the event pattern”.
EventBridge event bus là một kênh trung tâm trong AWS EventBridge, nơi các ứng dụng và dịch vụ AWS có thể đăng ký và phát hành các sự kiện. Các sự kiện này có thể được chuyển tiếp đến các đích khác nhau, bao gồm cả các AWS service target và EventBridge API destination.
EventBridge API destination cho phép bạn chuyển tiếp sự kiện đến một API endpoint bên ngoài, bằng cách sử dụng HTTP POST hoặc HTTPS POST. Điều này có nghĩa là bạn có thể chuyển tiếp các sự kiện đến các ứng dụng và dịch vụ khác, kể cả bên ngoài AWS.
Trong khi đó, AWS service target cho phép bạn chuyển tiếp các sự kiện đến các dịch vụ AWS khác, như Amazon SNS, Amazon SQS hoặc AWS Lambda. Các AWS service target này cho phép bạn xử lý các sự kiện theo cách bạn muốn, ví dụ như gửi email thông báo hoặc chạy mã Lambda để xử lý sự kiện.
Nếu bạn chọn Select a target là SNS topic và topic là demo-topic, điều này có nghĩa là các sự kiện sẽ được định tuyến đến một chủ đề Amazon SNS có tên là “demo-topic”. Bất cứ khi nào một sự kiện được đăng tải trên EventBridge Event Bus và đáp ứng với mẫu sự kiện trong quy tắc, nó sẽ được đưa đến chủ đề SNS và gửi đến các đối tượng đăng ký nhận thông báo từ chủ đề đó.
Tại phần config tag, mình sẽ bỏ qua nó.
Và đây là quá trình review, nếu không có gì thay đổi hãy bấm Create rule.
Sau khi tạo xong một rule trên Amazon EventBridge, bạn có thể test rule bằng cách gửi một sự kiện (event) tới event bus được liên kết với rule đó. Bạn có thể sử dụng AWS CLI để gửi sự kiện bằng cách sử dụng lệnh aws events put-events
, hoặc gửi sự kiện tới một service có thể sinh ra các sự kiện như S3 hoặc EC2.
Sau khi gửi sự kiện, bạn có thể kiểm tra xem sự kiện đã được nhận bởi rule hay chưa bằng cách truy cập vào mục “Event history” trên console của EventBridge. Nếu sự kiện đã được nhận bởi rule, nó sẽ được hiển thị ở phần “Matched events” của rule đó.