Skip to content
返回云服务

AWS SNS 发布订阅消息

发布订阅扇出到 SQS、Lambda、HTTP、邮件和移动推送端点。

AWS进阶

为什么

SNS 将一事件扇出给多订阅者 — 解耦生产者和 N 消费者。100 万发布/月免费。与 SQS 配对做持久扇出(SNS → SQS → Lambda)。

何时使用

事件扇出(下单 → 邮件 + 分析 + 库存)、系统事件和移动推送时用。避免点对点(用 SQS)。

如何做

1. 创建主题 — aws sns create-topic --name my-topic 2. 订阅 — aws sns subscribe --topic-arn ... --protocol sqs --notification-endpoint <queue-arn> 3. 发布 — aws sns publish --topic-arn ... --message '{"event":"order"}' 4. 扇出 — 一主题多 SQS 订阅,各得副本 5. 过滤 — 订阅过滤策略,仅匹配消息投递 6. FIFO 主题 — .fifo,消息组内保序 7. DLQ — 每订阅,捕获投递失败 8. 跨账户 — 用适当 IAM 策略订阅

示例

# 扇出:SNS → 3 SQS 队列 aws sns create-topic --name order-events TOPIC_ARN=arn:aws:sns:us-east-1:123:order-events for queue in email analytics inventory; do Q_ARN=$(aws sqs create-queue --queue-name $queue --query QueueUrl --output text) aws sns subscribe --topic-arn $TOPIC_ARN \ --protocol sqs --notification-endpoint $Q_ARN \ --attributes RawMessageDelivery=true done # 发布事件给所有订阅者 aws sns publish --topic-arn $TOPIC_ARN \ --message '{"orderId":"456","total":99.99}'

常见问题

  • ⚠SQS 订阅需策略 — SNS 须有队列的 sqs:SendMessage
  • ⚠Standard 主题无消息排序 — 用 FIFO 主题 + FIFO 队列
  • ⚠跨账户订阅失败 — 队列策略须允许发布者账户

最佳实践

  • ✓用 SNS → SQS → Lambda 模式 — SQS 缓冲、处理重试、Lambda 伸缩
  • ✓每订阅过滤策略 — 仅投递相关消息,降成本
  • ✓启用 RawMessageDelivery — SQS 中更干净 JSON,无 SNS 信封

常见问题解答

什么是AWS SNS 发布订阅消息?它解决什么问题?

发布订阅扇出到 SQS、Lambda、HTTP、邮件和移动推送端点。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手AWS SNS 发布订阅消息?

两步即可跑通:① 创建主题 — aws sns create-topic --name my-topic;② 订阅 — aws sns subscribe --topic-arn ... --protocol sqs --notification-endpoint <queue-arn>。建议先用免费套餐验证流程,再接入生产环境。

AWS SNS 发布订阅消息 最容易踩的坑是什么?

最高频的问题是:SQS 订阅需策略 — SNS 须有队列的 sqs:SendMessage。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

AWS SNS 发布订阅消息 的最佳实践有哪些?

AWS SNS 发布订阅消息 的最佳实践包括:用 SNS → SQS → Lambda 模式 — SQS 缓冲、处理重试、Lambda 伸缩;每订阅过滤策略 — 仅投递相关消息,降成本;启用 RawMessageDelivery — SQS 中更干净 JSON,无 SNS 信封。其中首条「用 SNS → SQS → Lambda 模式 — SQS 缓冲、处理重试、Lambda 伸缩」应作为团队默认规范写入 IaC 模板。

AWS SNS 发布订阅消息 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS SNS 发布订阅消息 多数提供免费套餐,先在免费额度内验证再放量。