Create an EventBridge Rule to get notified on EC2 Instance state change

Create an EventBridge Rule to get notified on EC2 Instance state change

avatar

Phong Nguyen

2024.03.22

Bài lab này sẽ hướng dẫn tạo rule trong EventBridge, add target là SNS topic. Nó sẽ bắt sự kiện thay đổi trạng thái của EC2 và notify đến SNS Topic.

Lab Details

  1. Duration: 30 minutes
  2. AWS Region: US East (N. Virginia) us-east-1
  3. Khi setting Network: chọn default VPC

Introduction

What is Amazon EventBridge?

EventBridge là một serverless service sử dụng các event để kết nối các thành phần ứng dụng với nhau, giúp bạn dễ dàng xây dựng các ứng dụng hướng sự kiện có thể mở rộng quy mô. Kiến trúc hướng sự kiện là một phong cách xây dựng các hệ thống phần mềm kết hợp lỏng lẻo, hoạt động cùng nhau bằng cách đưa ra và phản hồi các sự kiện. Kiến trúc hướng sự kiện có thể giúp bạn tăng cường tính linh hoạt và xây dựng các ứng dụng đáng tin cậy, có thể mở rộng.

Sử dụng EventBridge để định tuyến các sự kiện từ các nguồn như ứng dụng tự phát triển, dịch vụ AWS và phần mềm của bên thứ ba đến các ứng dụng trong tổ chức của bạn. EventBridge cung cấp những cách đơn giản và nhất quán để thu nạp, lọc, chuyển đổi và phân phối sự kiện để bạn có thể xây dựng ứng dụng một cách nhanh chóng.

Các use case thường sử dụng với EventBridge:

  • Schedule: Cron jobs (scheduled scripts) : Lên lịch để thực thi một công việc nào đó

  • Event Pattern: Tạo rule để react đến một Service target để thực hiện hành động nào đó. Ví dụ như thông báo đến Admin qua email mỗi khi user root login.

  • Trigger Lambda functions / Batch / ECS Task, send SQS/SNS messages…

Architecture Diagram

Task Details

  1. Launching EC2 Instance
  2. Creating SNS Topic
  3. Subscribing to the topic
  4. Creating EventBridge Rule
  5. Test EventBridge Rule

1. Launching EC2 Instance

1.1 Create Security Group

  • Name: d-sg-SAA-ec2-for-cloudwatch-alarm
  • Description: Allow ssh from internet
  • VPC: Deafult
  • Inbound rules
    TypeProtocolPort rangeSource
    SSHTCP220.0.0.0/0
  • Outbound rules
    TypeProtocolPort rangeSource
    All trafficAllAll0.0.0.0/0
  • Tags
    Keyvalue
    Named-sg-SAA-ec2-for-cloudwatch-alarm

1.2 Create EC2 Instance

  • Name: d-ec2-SAA-for-cloudwatch-alarm
  • OS: Default (Amazon Linux 2023)
  • Instance type: Default (t2.micro)
  • Key pair: d-key-SAA-common (Nếu chưa có thì tạo mới)
  • Network Setting:
    • VPC: Default
    • Subnet: us-east-1a
    • Auto-assign public IP: Enable
    • Select existing security group: d-sg-SAA-ec2-for-cloudwatch-alarm

2. Creating SNS Topic

Vào Console của SNS -> Click Topic -> Create topic

  • Type: Standard
  • Name: d-sns-SAA-demo-topic
  • Display name - optional: AWS Notification
  • Tags - optional:
    • Key: Name
    • Value: d-sns-SAA-demo-topic
  • Các thuộc tính khác để như default

Kết quả:

3. Subscribing to the topic

Vào Console SNS -> Topic -> Click vào topic vừa tạo (d-sns-SAA-demo-topic) -> Create subscription:

Subscribe Email to SNS topic

Sau khi hoàn thành thì trạng thái của subscription như bên dưới. Endpoint email đang Pending confirmation.

Bạn sẽ nhận 1 email confirming your subscription to your email. Trường hợp không có trong Inbox, bạn kiểm tra trong mục Spam.

Hoàn tất

4. Creating a EventBridge Rule

Open the EventBridge console -> Menu Rules -> Create rule

Step 1: Define rule detail

  • Name: d-event-rule-SAA-ec2-instance-state-change
  • Description - optional: EC2 Instance State-change Notification
  • Event bus: default
  • Rule type: Rule with an event pattern

Step 2: Build event pattern

  • Event source: AWS events or EventBridge partner events
  • Creation method: Use pattern form
  • Event pattern:
    • For Event source, select AWS service from the drop-down list.
    • For AWS service, select EC2 from the drop-down list.
    • For Event type, choose EC2 Instance State-change Notification from the drop-down list.
    • Choose Any state
    • Choose Any instance

Step 3: Select target(s)

  • Target types: AWS service
  • Select a target: SNS Topic
  • Topic: d-sns-SAA-demo-topic

Step 4: Configure tags - optional

  • Next

Step 5: Review and create

  • Review the details of the rule and choose Create rule.

Hoàn tất:

5. Test EventBridge Rule

  • Open the Amazon EC2 console
  • Thực hiện stop instance

Chúng ta sẽ nhận được thông báo qua email tương ứng với sự thay đổi trạng thái của EC2

  • Tiến hành Terminated EC2 (một phần trong Clean up)

Chúng ta tiếp tục nhận được 2 email thông báo về trạng thái shutting-down và trạng thái terminated

Clean up

Xóa tất cả Resource đã tạo

  1. Delete SG: d-sg-SAA-ec2-for-cloudwatch-alarm
  2. Delete SNS Topic: d-sns-SAA-demo-topic
  3. Delete subscription của d-sns-SAA-demo-topic
  4. Delete EventBridge rule

Chellenge

Với bài thực hành vừa rồi, để có thể nhận thông báo qua email từ các thay đổi trạng thái của EC2, chúng ta phải sử dụng 2 service sau:

  • Amazon EventBridge
  • Amazon SNS

Nội dung email chúng ta nhận được trông như bên dưới (Format dạng json nên nhìn hơi rối):

Tuy nhiên, với AWS User Notifications được công bố vào tháng 5 năm 2023, việc triển khai đã trở nên dễ dàng hơn và văn bản gửi đến email cũng trở nên dễ hiểu hơn!

Sau khi setting xong, khi EC2 thay đổi trạng thái, chúng ta sẽ nhận được email có nội dung như bên dưới:

Bạn cũng nhận được danh sách thông báo trên giao diện Console luôn

Cách setting vô cùng đơn giản

  • Vào Console của AWS User Notifications
  • Tại menu Notification configurations -> Create a notification configuration
  • Setting các thông tin

  • Create a notification configuration
  • Verify email

  • Create EC2 và test thay đổi trạng thái -> Confirm email và check Notify nút hình quả chuông ở Console