Hướng dẫn thực hiện lab để thiết lập báo cáo chi phí hàng ngày và báo cáo bảo mật trên AWS, sử dụng Amazon SES để verify email, deploy CloudFormation stack cho cost report và security report, test với Step Functions, và enable AWS managed notifications.
Giới thiệu
Trong blog này, chúng ta sẽ thực hiện lab để thiết lập báo cáo chi phí hàng ngày và báo cáo bảo mật trên AWS. Cụ thể, chúng ta sẽ verify email với Amazon SES, deploy CloudFormation stack cho cost report, test với Step Functions, enable AWS managed notifications, và tạo stack cho security report notification. Lab này giúp bạn nhận thông báo tự động về chi phí và các vấn đề bảo mật qua email.
Lab Introduction
- AWS experience: Intermediate
- Time to complete: 45 minutes
- AWS Region: US East (N. Virginia) us-east-1
- Cost to complete: Free Tier eligible
- Services used: Amazon SES, CloudFormation, Step Functions, SNS
Giới thiệu Service
Amazon SES (Simple Email Service) là dịch vụ gửi email đáng tin cậy, scalable từ AWS. Nó giúp gửi email từ applications mà không cần quản lý email server.
CloudFormation là dịch vụ để model và provision AWS resources bằng code. Chúng ta sẽ sử dụng template để deploy stacks cho cost và security reports.
Step Functions là dịch vụ orchestration cho serverless workflows, giúp automate quy trình như tạo và gửi reports.
Cost report trên AWS đề cập đến các công cụ như AWS Cost Explorer hoặc AWS Billing reports, giúp theo dõi và phân tích chi phí sử dụng dịch vụ AWS một cách chi tiết. Nó cung cấp báo cáo hàng ngày, hàng tháng về chi phí theo service, region, hoặc tag, hỗ trợ dự báo chi phí và tối ưu hóa ngân sách. Cost report có thể được tự động hóa qua Step Functions và gửi qua email để người dùng nhận thông báo kịp thời, tránh chi phí bất ngờ.
AWS Health Dashboard là dịch vụ cung cấp thông tin cá nhân hóa về tình trạng sức khỏe của AWS resources và services trong account của bạn. Nó hiển thị các sự kiện như downtime, maintenance, hoặc vấn đề bảo mật ảnh hưởng đến account, giúp bạn theo dõi và phản ứng nhanh chóng. AWS Health Dashboard tích hợp với SNS để gửi notifications, bao gồm AWS Health notifications, hỗ trợ enable hoặc disable để nhận thông báo tự động về các vấn đề liên quan đến bảo mật và hoạt động.
Architecture Diagram

Cụ thể:
- Cost Report Flow: EventBridge Rule kích hoạt hàng ngày (daily) sẽ trigger Step Functions workflow. Step Functions sẽ orchestrate các bước như gọi AWS Cost Explorer API qua Lambda function để thu thập dữ liệu chi phí, sau đó xử lý dữ liệu và sử dụng Amazon SES để gửi email report đến địa chỉ nhận.
- Security Report Flow: AWS Health Dashboard phát hiện các sự kiện bảo mật hoặc vấn đề hoạt động, gửi notification qua SNS topic. SNS sẽ trigger Step Functions, nơi workflow xử lý thông tin sự kiện (ví dụ: mock incident event cho test), sau đó gửi email thông báo qua Amazon SES.
Task Details
- Tạo email address identity (console)
- Verify email address identity
- Deploy cost report stack
- Test cost report bằng Step Functions
- Enable AWS managed notifications
- Tạo stack security report notification
- Clean Up Resource
Prerequisites
Trước khi bắt đầu tutorial này, bạn sẽ cần:
1. Tạo email address identity (console)
Lưu ý : Bước này bạn cần làm 2 lần cho email gửi và nhận.
- Đăng nhập vào AWS Management Console và mở Amazon SES console tại https://console.aws.amazon.com/ses/.
- Trong navigation pane, dưới Configuration, chọn Identities.
- Chọn Create identity.
- Dưới Identity details, chọn Email address làm identity type bạn muốn tạo.
- Đối với Email address, nhập email address mà bạn muốn sử dụng. Email address phải là một địa chỉ có thể nhận mail và bạn có quyền truy cập.
- Để tạo email address identity của bạn, chọn Create identity. Sau khi tạo, bạn nên nhận được verification email trong vòng năm phút. Bước tiếp theo là verify email address của bạn bằng cách theo thủ tục verification trong phần tiếp theo.

2. Verify email address identity
Lưu ý : Bước này bạn cần làm 2 lần cho email gửi và nhận.
- Kiểm tra inbox của email address được sử dụng để tạo identity và tìm kiếm email từ no-reply-aws@amazon.com.

- Mở email và click vào link để hoàn thành quá trình verification cho email address. Sau khi hoàn thành, Identity status cập nhật thành Verified.

3. Deploy cost report stack
Download template:
Deploy New stack.
Nhập tên là: SOA-Lab10-Cost-Report
- Input ReEmailAddress: Đây là email mà bạn sử dụng để nhận mail report hàng ngày. Mình sử dụng mail ngosylong0@gmail.com
- Input SendEmailAddress: Đây là email mà bạn sử dụng để gửi mail report hàng ngày. Mình sử dụng mail ngolong192@gmail.com

Role thì không điền gì. CloudFormation sẽ sử dụng quyền của user đang login để deploy.
Đợi đến khi hoàn thành.
4. Test cost report bằng Step Functions
Vì Rule là tạo report daily nên nếu cần test ngay thì chúng ta sẽ kích hoạt Step Functions thủ công.
Access Step Functions:
- Ở màn hình CloudFormation stack, chọn tab Resources.
- Click vào link của Step Functions.

Ở màn hình Step Functions ấn nút Start Execution.

Không cần truyền input. Ấn tiếp Start Execution.
Đợi execution thành công.

Vào Email Nhận và xác nhận report đã gửi tới thành công. (đôi khi mail bị liệt vào spam) 

5. Enable AWS managed notifications
- Mở User Notifications trong AWS Management Console.

- Trong navigation pane, chọn AWS managed notifications subscriptions.

- Chọn Enable AWS Health notifications hoặc Disable AWS Health notifications.

6. Tạo stack security report notification
- Download template ở đây:
- Deploy stack với:
- Tên: SOA-Lab10-Security-Report
- Email gửi: Email gửi đã sử dụng ở Cost report ở trên.
- Email nhận: Email nhận đã sử dụng ở cost report ở trên.

- Test với mock event:
- Vì không thể test với hình thức tạo user rồi public credential lên internet được nên chúng ta sẽ test với hình thức là mock một incident event và truyền vào Step Functions.
- Go to the Step Functions console.
- Select the SOA-StepFunction-SecurityReport state machine.
- Click
New execution
to create the test execution of the state machine.- Copy and paste the json below to the execution json field (or use Import).
- URL Download: 03.security-event.json

- Ấn Start execution. Xác nhận chạy thành công.

- Xác nhận mail.


7. Clean up resources