Cách thiết lập cảnh báo tự động cho AWS Savings Plans mới mua

Tác giả: Syed Muhammad Tawha và Dan Johns 

Ngày đăng: ngày 26 tháng 6, 2025
Danh mục: Amazon Simple Notification Service (SNS), AWS Cloud Financial Management, AWS CloudFormation, Cloud Cost Optimization

Khi các tổ chức mở rộng, các nhóm FinOps cần một cái nhìn tổng thể về các cam kết AWS Savings Plans để tối đa hóa hiệu quả sử dụng. Giải pháp này bao gồm việc triển khai các hệ thống giám sát và cảnh báo tự động nhằm xác định những Savings Plans chưa được khai thác đầy đủ trong khoảng thời gian có thể trả lại.

Khi bạn mua một Savings Plan, bạn cam kết sử dụng trong một hoặc ba năm. Các Savings Plans có cam kết theo giờ từ 100 USD trở xuống có thể được trả lại nếu chúng được mua trong vòng bảy ngày gần nhất và trong cùng tháng dương lịch, với điều kiện bạn chưa vượt quá giới hạn trả lại. Khi tháng dương lịch kết thúc (theo giờ UTC), những Savings Plans này sẽ không thể trả lại.

Trong bài đăng này, chúng tôi cung cấp các mẫu AWS CloudFormation để tạo AWS Step Functions state machine, chủ đề (topic) Amazon Simple Notification Service (SNS), bộ lập lịch (scheduler) Amazon EventBridge và các vai trò (roles) IAM cần thiết, nhằm tự động hóa việc giám sát các Savings Plans mới mua và làm nổi bật những kế hoạch chưa được sử dụng hiệu quả.

Tổng quan giải pháp

Giải pháp này tuân thủ các best practice về bảo mật của AWS bằng cách tách việc triển khai qua hai tài khoản. Một stack CloudFormation sẽ được tạo trong Management account để thiết lập các vai trò IAM cần thiết cho việc truy xuất dữ liệu sử dụng Savings Plans. Một stack CloudFormation khác sẽ được triển khai trong  Member Account mà bạn chọn trong AWS Organization của mình.

CloudFormation stack trong tài khoản thành viên sẽ tạo một máy trạng thái, đảm nhận (assumes) một vai trò trong tài khoản quản lý của bạn và phân tích tất cả Savings Plans trong tài khoản đó, bao gồm cả các kế hoạch được mua trong toàn tổ chức của bạn. Luồng công việc sẽ lọc các Savings Plans đang hoạt động (active) theo ngày mua, tập trung vào những kế hoạch được mua trong 7 ngày gần nhất và trong tháng dương lịch hiện tại. Sau đó, nó đánh giá tỷ lệ sử dụng và xác định những kế hoạch có mức sử dụng dưới ngưỡng định trước.

Máy trạng thái này sẽ chạy theo tần suất bạn chỉ định và sử dụng Amazon SNS để gửi email cảnh báo đến các địa chỉ bạn cung cấp khi tạo stack CloudFormation. Nội dung cảnh báo sẽ bao gồm thông tin chi tiết về các Savings Plans có mức sử dụng thấp và hướng dẫn quy trình trả lại.

Hình 1: Sơ đồ kiến trúc AWS – Tài khoản thành viên đảm nhận một vai trò để đọc dữ liệu Savings Plans từ tài khoản quản lý và kích hoạt một quy trình Step Functions, sau đó gửi cảnh báo qua email bằng Amazon SNS

Hướng dẫn triển khai

Yêu cầu

  • Một tài khoản AWS
  • Quyền IAM để tạo CloudFormation Stack và triển khai một IAM Role trong Management Account
  • Quyền IAM để tạo CloudFormation Stack và triển khai Step Functions, IAM Roles, SNS, cùng EventBridge scheduler trong Member Account bạn chọn

Triển khai giải pháp

Phần sau sẽ hướng dẫn bạn triển khai các tài nguyên cho giải pháp này trong các tài khoản của bạn:

Phần 1 – Triển khai trong Member Account

  1. Đăng nhập vào AWS Management Console của Member Account nơi bạn muốn giải pháp này hoạt động.
  2. Triển khai CloudFormation Stack với template dành cho phần này:
  3. Stack Name: new-sp-utilization-alert-member
  4. AlertEmails: nhập danh sách email (cách nhau bằng dấu phẩy) sẽ nhận thông báo về các Savings Plans sử dụng thấp.
  5. ManagementAccountId: nhập 12 chữ số AWS Account ID của tài khoản quản lý.
  6. ScheduleExpression: định nghĩa tần suất chạy state machine của Step Functions bằng định dạng cron (mặc định: hàng ngày lúc 09:00 UTC).
  7. UtilizationThreshold: chỉ định tỷ lệ sử dụng tối thiểu (%) để nhận cảnh báo khi sử dụng dưới mức này.
  8. Nhấn Next, tích vào ô xác nhận và Create stack.
  9. Chờ cho đến khi trạng thái stack chuyển sang CREATE-COMPLETE.
  10. Bạn sẽ nhận một email yêu cầu xác nhận đăng ký SNS topic do stack tạo. Vui lòng xác nhận để bắt đầu nhận thông báo.
  11. Vào tab Outputs của stack vừa tạo, ghi nhớ giá trị của các key ExecutionRoleArn và StateMachineArn; bạn sẽ dùng chúng ở phần kế tiếp.

Phần 2 – Triển khai trong Management Account

  1. Đăng nhập vào AWS Management Console của Management Account (phải là cùng tài khoản bạn đã nhập vào ManagementAccountId ở trên).
  2. Triển khai CloudFormation Stack với template dành cho phần này:
  3. Stack Name: new-sp-utilization-alert-management
  4. ExecutionRoleArn: dán giá trị ExecutionRoleArn sao chép từ Outputs của stack phần thành viên.
  5. StateMachineArn: dán giá trị StateMachineArn sao chép từ Outputs của stack phần thành viên.
  6. Nhấn Next, tích vào ô xác nhận và Create stack.
  7. Chờ cho đến khi trạng thái stack chuyển sang CREATE_COMPLETE.

Đến đây, cả hai stack đã được triển khai hoàn chỉnh và sẵn sàng cho bước kiểm thử tiếp theo.

Kiểm thử giải pháp

Bây giờ khi máy trạng thái (state machine) của Step Functions và các tài nguyên liên quan đã được triển khai trong tài khoản thành viên của bạn, hãy kiểm thử việc triển khai như sau:

  • Đăng nhập lại vào AWS Management Console của Member Account nơi bạn đã triển khai phần 1 của giải pháp.
  • Điều hướng đến tab Resources trong stack CloudFormation và tìm máy trạng thái SavingsPlansAlerts của Step Functions. Nhấp vào liên kết màu xanh.
  • Bạn sẽ được chuyển đến console của Step Functions. Nhấn nút Start execution ở góc phải.
  • Quan sát chi tiết thực thi trong phần Events để theo dõi tiến trình của máy trạng thái. Nếu bạn có bất kỳ Savings Plans nào được mua trong 7 ngày gần nhất và trong tháng dương lịch hiện tại, bạn sẽ nhận được email thông báo.
  • Một lần thực thi thành công sẽ được đánh dấu bằng ô màu xanh trên Graph view. Nếu có Savings Plans nào có mức sử dụng dưới ngưỡng bạn đã chỉ định, bạn sẽ nhận được email tại địa chỉ đã cung cấp.

Dọn dẹp tài nguyên

Tất cả các tài nguyên đã triển khai cho giải pháp này có thể được xóa bằng cách xóa các CloudFormation stack. Bạn có thể xóa stack thông qua AWS Management Console hoặc AWS CLI.

Để xóa stack của tài khoản quản lý (CLI):

aws cloudformation delete-stack –stack-name new-sp-utilization-alert_management

Để xóa stack của tài khoản thành viên (CLI):

aws cloudformation delete-stack –stack-name new-sp-utilization-alert_member

Hiểu và xử lý cảnh báo

Khi bạn nhận được cảnh báo về các Savings Plans chưa được tận dụng, bạn nên xem xét chi tiết sử dụng được cung cấp trong email thông báo. Phân tích các chỉ số sử dụng của bạn so với cam kết (commitment) ban đầu khi mua Savings Plan và xác định xem mức sử dụng thấp có phải là đúng như dự kiến hay do các yếu tố khác như di chuyển khối lượng công việc, thay đổi kiến trúc hoặc tính toán sai nhu cầu công suất. Hãy cân nhắc trả lại Kế hoạch Tiết kiệm nếu mức sử dụng vẫn liên tục dưới ngưỡng bạn đã đặt, kế hoạch được mua trong 7 ngày gần nhất, việc mua diễn ra trong cùng tháng dương lịch và cam kết theo giờ không vượt quá 100 USD. Đồng thời, hãy ghi lại lý do trả lại để tham khảo và lập kế hoạch trong tương lai.

Kết luận

Trong bài đăng này, chúng tôi đã khám phá cách sử-dụng API của Savings Plan và Cost Explorer để xác-định các Savings Plans chưa được tận-dụng trong tổ-chức của bạn. Sau đó, chúng tôi đã minh-họa cách sử-dụng một máy trạng-thái (State Machine) của Step Functions để lọc các Savings Plans đã mua trong vòng 7 ngày qua và trong tháng dương-lịch hiện-tại. Khung thời-gian này rất quan-trọng vì bạn có-thể trả lại Savings Plans trong khoảng thời-gian cho phép nếu chúng được mua do nhầm-lẫn hoặc không được sử-dụng hiệu-quả. Để được hướng-dẫn về việc hoàn trả lại một Savings Plan đã mua, vui lòng tham khảo tài liệu Returning a Purchased Savings Plan

Về các tác giả

Syed Muhammad Tawha

Syed Muhammad Tawha là Quản lý tài khoản kỹ thuật chính (Principal Technical Account Manager) tại AWS, làm việc tại Dublin, Ireland. Tawha chuyên về Lưu trữ (Storage), Khả năng phục hồi (Resilience) và Tối ưu hóa chi phí đám mây (Cloud Cost Optimization). Anh có đam mê giúp đỡ các khách hàng của AWS. Tawha cũng thích dành thời gian cho bạn bè và gia đình của mình.

Dan Johns

Dan Johns là một Kỹ sư Kiến trúc Giải pháp Cấp cao (Senior Solutions Architect Engineer), hỗ trợ khách hàng xây dựng trên nền tảng AWS và đáp ứng các yêu cầu kinh doanh. Ngoài công việc, anh thích đọc sách, dành thời gian cho gia đình và tự động hóa các công việc trong nhà.

Leave a comment