Amazon Simple Notification Service
Phát thông báo (pub/sub)
Gửi một message tới nhiều người nhận cùng lúc (fan-out): SQS, Lambda, email, SMS, HTTP.
- Chi phí$ Rẻ
- Độ khó●●●●●
- Để không có tốn tiền?Không
- Serverless
- Có trong đềCLF · SAA · DVA · SOA
Hình dungNhư loa phát thanh: nói một lần, mọi người đăng ký đều nghe.
SNS đứng ở đâu trong hệ thống?
Một ví dụ thật, từng bước
- Khi có đơn hàng mới, ba hệ thống cần biết: kho, kế toán và gửi email cho khách.
- Dịch vụ đặt hàng publish một message lên SNS topic “don-hang-moi”.
- Topic có ba hàng đợi SQS đăng ký; mỗi hàng đợi nhận một bản sao và hệ thống phía sau xử lý theo tốc độ riêng.
- Thêm hệ thống mới, ví dụ phân tích dữ liệu, chỉ cần đăng ký thêm vào topic, không phải sửa dịch vụ đặt hàng.
- Cùng lúc đó, CloudWatch alarm cũng gửi qua một topic khác để nhắn SMS cho người trực khi hệ thống lỗi.
Khi nào nên dùng
✓ Nên dùng khi
Fan-out một sự kiện, gửi cảnh báo qua email/SMS.
✗ Không nên dùng khi
Cần lọc/định tuyến sự kiện phức tạp → EventBridge; cần lưu lại để xử lý dần → SQS.
Ví dụ hay gặp
- Fan-out một sự kiện tới nhiều hàng đợi SQS hoặc Lambda
- Cảnh báo vận hành qua email/SMS
- Push notification cho mobile app
SNS, SQS hay EventBridge?
| Kiểu | Phát tin tới nhiều bên đăng ký | Hàng đợi chờ xử lý | Định tuyến sự kiện theo luật |
|---|---|---|---|
| Gửi tới | SQS, Lambda, HTTP, email, SMS, push | Bên nào tới lấy | Hơn 20 loại đích AWS, API |
| Lọc | Theo thuộc tính message | Không | Luật lọc theo nội dung sự kiện |
| Hợp nhất với | Fan-out, thông báo cho người | Tách hệ thống, chịu tải | Sự kiện từ dịch vụ AWS/SaaS |
Tốn bao nhiêu tiền?
- Cách tính: ~$0,50/1 triệu publish; giao tới SQS và Lambda miễn phí; email, HTTP, SMS tính riêng (SMS theo quốc gia).
- Miễn phí: Always Free: 1 triệu publish, 1.000 email, 100.000 HTTP mỗi tháng.
SMS khá đắt và dễ bị tấn công 'bơm SMS'; quên filter policy nên mọi subscriber nhận mọi message.
Một sự kiện cần tới nhiều hệ thống, mỗi bên xử lý độc lập → SNS fan-out ra nhiều SQS. Nhận SMS/email khi CloudWatch alarm kích hoạt → SNS. Cần thứ tự → FIFO topic kèm FIFO queue.
Thử sức với câu hỏi thi thật
1[...] is a fast, flexible, fully managed push messaging service.
- AAmazon SNS.
- BAmazon SES.
- CAmazon SQS.
- DAmazon FPS.
Xem đáp án
Đáp án đúng: A
SNS là dịch vụ đẩy thông báo (pub/sub) được quản lý hoàn toàn. SES gửi email, SQS là hàng đợi.
2A user is running a webserver on EC2. The user wants to receive the SMS when the EC2 instance utilization is above the threshold limit. Which AWS services should the user configure in this case?
- AAWS CloudWatch + AWS SQS.
- BAWS CloudWatch + AWS SNS.
- CAWS CloudWatch + AWS SES.
- DAWS EC2 + AWS Cloudwatch.
Xem đáp án
Đáp án đúng: B
CloudWatch alarm theo dõi CPU của EC2 và gửi tới SNS topic có đăng ký SMS. SQS là hàng đợi, không gửi SMS; SES là dịch vụ gửi email.
Câu hỏi thường gặp
Fan-out với SNS và SQS là gì?
Một topic SNS gửi cùng một message tới nhiều hàng đợi SQS, mỗi hàng đợi do một hệ thống xử lý riêng theo tốc độ của mình. Cách này giúp thêm bên xử lý mới mà không phải sửa bên gửi.
SNS tính tiền thế nào?
Theo số request publish và số lần giao tới từng loại đích; giao tới SQS hay Lambda rất rẻ, còn SMS và email có giá riêng, SMS khác nhau theo quốc gia.
Đề thi AWS hay hỏi gì về SNS?
Mẫu fan-out SNS + SQS, gửi cảnh báo CloudWatch qua email, lọc message theo thuộc tính, FIFO topic khi cần đúng thứ tự, và phân biệt với SQS và EventBridge.