Tác giả: Ruchikka Chaudhary, Preenesh Nayanasudhan, and Rommel Sunga
Ngày phát hành: 15 JAN 2026
Chuyên mục: Amazon Simple Notification Service (SNS), AWS Budgets, AWS End User Messaging
Quản lý chi phí đám mây hiệu quả là một mối quan tâm quan trọng đối với các tổ chức ở mọi quy mô. Mặc dù AWS Budgets cung cấp các công cụ mạnh mẽ để đặt ngưỡng chi tiêu và nhận thông báo, nhưng các cảnh báo này theo truyền thống được gửi qua email hoặc thông báo trên AWS Management Console. Các phương pháp thông báo truyền thống này phải đối mặt với một số thách thức khi quản lý chi phí đám mây:
- Thông báo email có thể không được xem ngay lập tức
- Các cảnh báo ngân sách quan trọng có thể bị lạc trong hộp thư đến quá tải
- Các thành viên trong nhóm có thể không có quyền truy cập ngay vào email hoặc console của họ
- Các nhóm toàn cầu cần cơ chế cảnh báo dễ tiếp cận hoạt động trên các múi giờ
Hôm nay, chúng tôi chia sẻ một giải pháp đưa các cảnh báo AWS Budgets trực tiếp đến WhatsApp của bạn bằng cách sử dụng AWS End User Messaging—cho phép nhận thức chi phí theo thời gian thực và phản ứng nhanh hơn với các ngưỡng ngân sách dù bạn ở bất cứ đâu.
Tổng quan về giải pháp
Giải pháp của chúng tôi tích hợp AWS Budgets với tính năng nhắn tin WhatsApp bằng cách sử dụng AWS End User Messaging, AWS Lambda và Amazon Simple Notification Service (Amazon SNS). Khi một ngưỡng ngân sách bị vượt quá, cảnh báo sẽ được xử lý và gửi dưới dạng tin nhắn WhatsApp được định dạng đến những người nhận được chỉ định.
Kiến trúc, được hiển thị trong hình sau, bao gồm bốn dịch vụ AWS chính để gửi cảnh báo ngân sách. AWS Budgets theo dõi chi phí so với các ngưỡng bạn đã xác định. Khi chi phí vượt quá các ngưỡng này, Amazon SNS sẽ nhận được cảnh báo. Một hàm AWS Lambda xử lý cảnh báo này và gửi nó qua AWS End User Messaging đến WhatsApp. Người dùng sau đó nhận được các thông báo ngân sách có thể hành động trực tiếp trên WhatsApp của họ.

Dữ liệu Quản lý Chi phí và Thanh toán, mà AWS Budgets sử dụng để giám sát tài nguyên, được cập nhật ít nhất một lần mỗi ngày. Hãy nhớ rằng thông tin ngân sách và các cảnh báo liên quan được cập nhật và gửi theo tần suất làm mới dữ liệu này. Trong một kỳ ngân sách, các thông báo được kích hoạt mỗi khi trạng thái thông báo chuyển từ OK sang Exceeded (khi ngưỡng bị vượt quá). Nếu ngân sách vẫn ở trạng thái Exceeded trong cùng một kỳ ngân sách, AWS Budgets sẽ không gửi thêm cảnh báo.
Điều kiện tiên quyết
Việc triển khai yêu cầu một tài khoản AWS với các quyền thích hợp cho AWS CloudFormation, Lambda, Amazon SNS và AWS Budgets. Bạn cũng phải có Tài khoản doanh nghiệp WhatsApp được tích hợp với AWS End User Messaging Social và ID số điện thoại WhatsApp từ console AWS End User Messaging. Để biết hướng dẫn cách tìm thông tin này, hãy xem Xem ID số điện thoại trong AWS End User Messaging Social.
Để biết thêm thông tin về cách thiết lập WhatsApp bằng AWS End User Messaging Social, hãy xem Tự động hóa quy trình làm việc với WhatsApp bằng AWS End User Messaging Social.
Trước khi bạn triển khai giải pháp này, hãy tạo một mẫu tiện ích đã được phê duyệt trong tài khoản Meta của bạn có tên aws_budgets_notification_template (như trong ảnh chụp màn hình sau). Ngoài ra, hãy sử dụng tên mẫu ưa thích của bạn và sửa đổi mã hàm Lambda cho phù hợp.


Hình trên hiển thị các mẫu biến có thể được sử dụng khi tạo mẫu tin nhắn. Bạn cũng có thể sử dụng lệnh AWS Command Line Interface (AWS CLI) sau để tạo mẫu tin nhắn:
aws socialmessaging create-whatsapp-message-template \ --region <region> \ --id <waba-id> \ --template-definition "$(echo '{ "name": "aws_budgets_notification_template", "language": "en", "category": "UTILITY", "parameter_format": "named", "components": [ { "type": "HEADER", "format": "TEXT", "text": "{{emoji}} Budget Alert", "example": { "header_text_named_params": [ {"param_name": "emoji", "example": "💰"} ] } }, { "type": "BODY", "text": "Subject: {{subject}}\\nDetails: {{notification_title}}\\nAWS Account {{account_info}}\\n\\n{{notification_msg}}\\n\\nBudget Name: {{budget_name}}\\nBudget Type: {{budget_type}}\\nBudgeted Amount: {{budgeted_amount}}\\nAlert Type: {{alert_type}}\\nAlert Threshold: {{alert_threshold}}\\nFORECASTED Amount: {{forecasted_amount}}\\n\\nAWS Console: {{console_link}}\\n\\nTime: {{time}}\\n\\nTip: Check your AWS Billing Dashboard for detailed cost breakdown", "example": { "body_text_named_params": [ {"param_name": "subject", "example": "AWS Budgets: Budget-Cloudwatch-budget-dev has exceeded your alert threshold"}, {"param_name": "notification_title", "example": "AWS Budget Notification Oct 19, 2025"}, {"param_name": "account_info", "example": "AWS Account 12345"}, {"param_name": "notification_msg", "example": "You requested that we alert you when the FORECASTED Cost associated with your Budget-Cloudwatch-dev Budget is greater"}, {"param_name": "budget_name", "example": "Budget-Cloudwatch-budget-dev"}, {"param_name": "budget_type", "example": "Cost"}, {"param_name": "budgeted_amount", "example": "$1"}, {"param_name": "alert_type", "example": "Cost"}, {"param_name": "alert_threshold", "example": "> 1"}, {"param_name": "forecasted_amount", "example": "$2"}, {"param_name": "console_link", "example": "https://console.aws.amazon.com/billing/home#/budgets"}, {"param_name": "time", "example": "2025-10-19 12:38:52 UTC"} ] } } ] }' | base64)"
Bạn có thể xác nhận trạng thái phê duyệt và loại mẫu trong cổng Meta.
Hướng dẫn giải pháp
Thành phần cốt lõi bao gồm một hàm Lambda dựa trên Python xử lý các cảnh báo Ngân sách và định dạng chúng để gửi qua WhatsApp. Hàm này nhận các sự kiện SNS chứa dữ liệu cảnh báo ngân sách, trích xuất thông tin liên quan, định dạng các tin nhắn theo ngữ cảnh và gửi thông báo qua AWS End User Messaging Social. Hàm sau đây hiển thị một ví dụ để phân tích nội dung tin nhắn SNS:
def process_notification(record):
"""Process SNS notification and send WhatsApp message"""
sns_message = record['Sns']
subject = sns_message.get('Subject', 'AWS Notification')
message_body = sns_message.get('Message', '')
logger.info(f"Processing notification - Subject: {subject}")
process_budget_notification(subject, message_body)
Ví dụ sau đây minh họa cách định dạng thông tin cảnh báo—bao gồm chủ đề, chi tiết và dấu thời gian—và gửi tin nhắn đến WhatsApp.
#Create template message with parsed valuestemplate_name = "aws_budgets_notification_template"template_message = { "name": template_name, "language": { "code": "en" }, "components": [ { "type": "header", "parameters": [{ "type": "text", "parameter_name": "emoji", "text": "💰" }] }, { "type": "body", "parameters": [ { "type": "text", "parameter_name": "subject", "text": subject }, { "type": "text", "parameter_name": "notification_title", "text": notification_title }, { "type": "text", "parameter_name": "account_info", "text": f"AWS Account {account_number}" }, { "type": "text", "parameter_name": "notification_msg", "text": notification_msg + "." }, { "type": "text", "parameter_name": "budget_name", "text": budget_details.get('Budget Name', '') }, { "type": "text", "parameter_name": "budget_type", "text": budget_details.get('Budget Type', '') }, { "type": "text", "parameter_name": "budgeted_amount", "text": budget_details.get('Budgeted Amount', '') }, { "type": "text", "parameter_name": "alert_type", "text": budget_details.get('Alert Type', '') }, { "type": "text", "parameter_name": "alert_threshold", "text": budget_details.get('Alert Threshold', '') }, { "type": "text", "parameter_name": "forecasted_amount", "text": budget_details.get('FORECASTED Amount', '') }, { "type": "text", "parameter_name": "console_link", "text": "https://console.aws.amazon.com/billing/home#/budgets" }, { "type": "text", "parameter_name": "time", "text": datetime.now().strftime('%Y-%m-%d %H:%M:%S UTC') } ] } ]}send_whatsapp_message(template_message)
Hàm send_whatsapp_message sử dụng AWS End User Messaging Social để gửi các tin nhắn được định dạng thông qua client socialmessaging, như trong ví dụ sau:
def send_whatsapp_message(message): client = boto3.client('socialmessaging') # Get environment variables phone_number_id = os.environ.get('WHATSAPP_PHONE_NUMBER_ID') recipient = os.environ.get('ALERT_RECIPIENT')# Prepare message object message_object = {"messaging_product": "whatsapp","recipient_type": "individual","to": recipient,"type": "template","template": message} # Send messageresponse = client.send_whatsapp_message(originationPhoneNumberId=phone_number_id,metaApiVersion="v20.0",message=bytes(json.dumps(message_object), "utf-8") )
Triển khai giải pháp
Giải pháp sử dụng AWS CloudFormation cho việc triển khai cơ sở hạ tầng dưới dạng mã (IaC). Mẫu chính tạo một topic SNS cho các thông báo cảnh báo, một hàm Lambda để xử lý tin nhắn và các vai trò AWS Identity and Access Management (IAM) cần thiết với quyền hạn tối thiểu.
Mẫu CloudFormation yêu cầu một số người nhận có tài khoản WhatsApp đang hoạt động để nhận thông báo cảnh báo dưới dạng tin nhắn. Mẫu cũng yêu cầu ID số điện thoại WhatsApp được truy xuất từ console AWS End User Messaging Social, như đã lưu ý trong các điều kiện tiên quyết. Mẫu phải được triển khai trong cùng AWS Region với AWS End User Messaging Social. Xem mã sau:
aws cloudformation deploy \ --template-file <> \ --stack-name budget-eum-whatsapp-alerts \ --parameter-overrides \ ActualSpendThreshold= \ AlertRecipient=<+1234567890> \ BudgetAmount=<Budget Amount e.g. 3000> \ Environment= \ ForecastedSpendThreshold= \ WhatsAppPhoneNumberId= \ --capabilities CAPABILITY_NAMED_IAM \ --region <EUM-region>
Kiểm tra giải pháp
Giải pháp có thể được kiểm tra và xác thực bằng cách sử dụng topic SNS được tạo bởi stack CloudFormation. Sử dụng lệnh AWS CLI sau để xuất bản một tin nhắn kiểm tra đến topic SNS:
aws sns publish \ --topic-arn arn:aws:sns:<region>:<account>:<topic-name> \ --subject "[Test] AWS Budget Alert: Budget-Alert-EUM has exceeded 80% of your budgeted amount" \ --message "AWS Budget Notification - Your budget has exceeded the alert thresholdAWS Account 123456789012Budget Name: Budget-Alert-EUMBudget Type: CostBudgeted Amount: $100.00Alert Type: ACTUALAlert Threshold: 80%FORECASTED Amount: $85.00You have exceeded 80% of your budget for this period" \ --region <region>
Tin nhắn SNS kích hoạt hàm Lambda, hàm này gửi cảnh báo đến người nhận WhatsApp đã cấu hình của bạn, như trong ảnh chụp màn hình sau.

Dọn dẹp
Sử dụng các bước sau để dọn dẹp tài nguyên của bạn khi bạn không còn cần giải pháp này nữa:
- Xóa stack CloudFormation đã triển khai trong giải pháp này:
budget-eum-whatsapp-alerts. - Xóa mẫu trong tài khoản Meta của bạn.
Kết luận
Việc tích hợp các cảnh báo AWS Budgets với thông báo WhatsApp thể hiện một bước tiến đáng kể trong việc giám sát chi phí hiện đại. Bằng cách sử dụng AWS End User Messaging Social, bạn có thể gửi các cảnh báo quan trọng đến các nhóm thông qua kênh liên lạc ưa thích của họ trong khi vẫn duy trì độ tin cậy và khả năng mở rộng của các dịch vụ AWS. Kiến trúc mô-đun của giải pháp, mô hình bảo mật cơ bản nhưng hiệu quả và thiết kế tiết kiệm chi phí làm cho nó phù hợp với các tổ chức có quy mô khác nhau.
Về tác giả

Ruchikka Chaudhary
Ruchikka là Kiến trúc sư Giải pháp II tại Amazon Web Services (AWS), tập trung vào khu vực công toàn cầu. Cô chuyên giúp khách hàng tối ưu hóa cơ sở hạ tầng đám mây của họ và áp dụng các giải pháp dựa trên điện toán khác nhau. Với kinh nghiệm sâu rộng về AWS, cô đã hướng dẫn thành công các tổ chức trong hành trình chuyển đổi kỹ thuật số của họ, đặc biệt trong các lĩnh vực điện toán hiệu năng cao và dịch vụ truyền thông. Ngoài công việc kỹ thuật, cô thích đọc sách, phác thảo và khám phá thế giới thông qua du lịch.

Preenesh Nayanasudhan
Preenesh Nayanasudhan là Kiến trúc sư Giải pháp cấp cao của AWS, hỗ trợ khách hàng Dịch vụ Tài chính Toàn cầu. Anh đã làm việc với nhiều khách hàng đa dạng và chứng kiến tận mắt cách các công nghệ AWS tạo ra sự khác biệt sâu sắc cho doanh nghiệp và khách hàng cuối của họ với chuyên môn đáng kể về AI tạo sinh & AI tác nhân.

Rommel Sunga
Rommel là Kiến trúc sư Giải pháp cấp cao tại AWS, có trụ sở tại Singapore. Anh chuyên về AWS End User Messaging và Amazon Simple Email Service, giúp khách hàng xây dựng các giải pháp truyền thông có khả năng mở rộng và đáng tin cậy. Với chuyên môn về kiến trúc nhắn tin dựa trên đám mây, anh tập trung vào việc cho phép các tổ chức nâng cao mức độ tương tác với khách hàng của họ.