Amazon SNS

Pub/Sub 型全托管消息服务,将一条消息同时分发给多个订阅者,实现扇出模式

概述

Amazon Simple Notification Service (SNS) 是一项 Pub/Sub(发布/订阅)型全托管消息服务。发布者将消息发送到主题(Topic),SNS 自动将消息分发给该主题的所有订阅者(Lambda、SQS、HTTP 端点、邮件等)。这种扇出模式使得一个事件可以同时触发多个后续处理,无需发布者了解订阅者的存在。

扇出模式 - 一对多分发

SNS 最核心的使用模式是扇出(Fan-out)。一条消息发布到 SNS 主题后,所有订阅者同时收到该消息的副本。典型场景是订单处理:订单创建事件发布到 SNS 后,同时触发库存扣减(Lambda)、邮件通知(SES)、数据分析(Kinesis)等多个下游处理。与 SQS 组合的 SNS→SQS 扇出模式尤为常见,每个 SQS 队列独立消费消息,互不影响。

消息过滤与成本

SNS 的订阅过滤策略允许订阅者只接收感兴趣的消息子集。过滤基于消息属性(Message Attributes)进行,支持精确匹配、前缀匹配、数值范围等条件。过滤在 SNS 侧执行,被过滤的消息不会投递给订阅者,因此不产生投递费用。标准主题费用为每百万次发布 0.50 美元。

实务中的活用模式

实务中 SNS 常见的活用模式包括:CloudWatch Alarm → SNS → 运维通知(告警扇出)、S3 事件 → SNS → 多个 Lambda(文件处理扇出)、跨账户/跨区域消息分发(灾备架构)。死信队列(DLQ)设置对于 Lambda 订阅者尤为重要。消息加密使用 KMS,传输中使用 TLS 加密。

共有するXB!