

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 什么是 Amazon SNS？
<a name="welcome"></a>

Amazon Simple Notification Service（Amazon SNS）是一项完全托管式服务，提供从发布者（生产者）向订阅用户（使用者）的消息传输。发布者通过将消息发送至*主题*与订阅用户进行异步交流，主题是一个逻辑接入点和通信通道。

## 工作原理
<a name="how-it-works"></a>

在 SNS 中，发布者向主题发送消息，该主题充当通信通道。该主题充当逻辑接入点，确保跨不同平台将消息传递给多个订阅用户。

SNS 主题的订阅用户可以通过不同的端点接收消息，具体取决于他们的使用案例，例如：
+ Amazon SQS
+ Lambda
+ HTTP(S) 端点
+ 电子邮件
+ 移动推送通知
+ 移动文本消息（SMS）
+ Amazon Data Firehose
+ 服务提供商（例如 Datadog、MongoDB、Splunk）

SNS 支持 Application-to-Application (A2A) 和 Application-to-Person (A2P) 消息传递，因此可以灵活地在不同的应用程序之间发送消息，也可以直接向手机、电子邮件地址等发送消息。

![Amazon SNS 通过 (A2A) 和 application-to-application (A2P) 终端节点向订阅者发送来自发布者的消息。 application-to-person它显示了 Lambda 函数、Amazon SQS 队列、终端节点和 Data Firehose 等 A2A 终端节点 HTTP/S ，以及包括短信、移动推送通知和电子邮件在内的 A2P 终端节点，重点介绍了 Amazon SNS 在异步、事件驱动型通信方面的灵活性。](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/images/sns-delivery-protocols.png)


## 访问 Amazon SNS
<a name="welcome-accessing"></a>

您可以通过控制台、或访问和管理 Amazon SNS AWS CLI AWS SDKs，具体取决于您的首选交互方式。该控制台为基本任务提供了图形界面，而 AWS CLI 和则为更复杂的用例 SDKs 提供了高级配置和自动化功能。
+ [Amazon SNS 控制台](https://console.aws.amazon.com/sns/v3/home)提供了一个方便的用户界面，用于创建主题和订阅、发送和接收消息以及监控事件和日志。
+  AWS Command Line Interface (AWS CLI) 允许您直接访问 Amazon SNS API 以获取高级配置和自动化用例。有关更多信息，请参阅[将 Amazon SNS 与 AWS CLI结合使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-sns.html)。
+ AWS SDKs 以多种语言提供。有关更多信息，请参阅[SDKs 和工具包](https://aws.amazon.com/getting-started/tools-sdks/)。

## Amazon SNS 常见场景
<a name="sns-common-scenarios"></a>

使用这些常见的 Amazon SNS 场景可实现可扩展的事件驱动型架构，并确保应用程序和用户之间实现可靠的实时通信。

### 应用程序集成
<a name="SNSFanoutScenario"></a>

*扇出*场景是复制发布到 SNS 主题的消息并将其推送到多个端点（例如 Firehose 传输流、Amazon SQS 队列、HTTP(S) 端点和 Lambda 函数）的场景。这允许进行并行异步处理。

例如，您可以开发一个应用程序，以在产品被下单的任何时候发布消息至 SNS 主题。然后，订阅 SNS 主题的 SQS 队列会接收到新订单的相同通知。附加到其中一个 SQS 队列的 Amazon Elastic Compute Cloud (Amazon EC2) 服务器实例可以对订单进行处理或执行。您还可以将另一个 Amazon EC2 服务器实例附加到数据仓库，以便分析收到的所有订单。

![Amazon SNS 中的一种扇出场景，在这种场景中，来自发布者的单条消息被发送到 Amazon SNS 主题，然后复制到多个端点，例如 Amazon SQS 队列。每个 Amazon SQS 队列都将消息转发到一个 Amazon EC2 实例，一个处理订单处理，另一个执行数据分析，演示事件驱动型应用程序的并行异步消息传输。](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/images/sns-fanout.png)


您还可以通过扇出复制使用您的测试环境复制发送到生产环境的数据。对前一个示例进行展开讨论，您还可以为同一个 SNS 主题订阅另一个 SQS 队列，以处理新来的订单。然后，可将这个新 SQS 队列附加到测试环境中，您可以继续使用从生产环境中接收到的数据改进和测试应用程序。

**重要**  
在将任何生产数据发送到测试环境之前，请确保您考虑数据隐私和安全性。

有关更多信息，请参阅以下资源：
+ [扇出到 Firehose 传输流](sns-firehose-as-subscriber.md)
+ [将 Amazon SNS 通知扇出到 Lambda 函数以进行自动处理](sns-lambda-as-subscriber.md)
+ [将 Amazon SNS 通知扇出到 Amazon SQS 队列进行异步处理](sns-sqs-as-subscriber.md)
+ [将 Amazon SNS 通知扇出到 HTTPS 端点](sns-http-https-endpoint-as-subscriber.md)
+ [使用 Amazon SNS 以及计算、存储、数据库 AWS 和网络服务实现事件驱动型计算](https://aws.amazon.com/blogs/compute/event-driven-computing-with-amazon-sns-compute-storage-database-and-networking-services/) 

### 应用程序提示
<a name="SNSAlertsScenario"></a>

应用程序和系统提示是由预定义阈值触发的通知。Amazon SNS 可以通过 SMS 和或电子邮件将这些通知发送给指定用户。例如，当事件发生时，您可以立即收到通知，例如您的 Amazon EC2 Auto Scaling 组的特定更改、上传到 Amazon S3 存储桶的新文件或亚马逊的指标阈值被突破。 CloudWatch有关更多信息，请参阅[亚马逊* CloudWatch 用户*指南中的设置 Amazon SNS 通知](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)。

### 用户通知
<a name="SNSPushMessaging"></a>

Amazon SNS 可以向个人或组发送推送电子邮件和短信（SMS 消息）。例如，您可以将电子商务订单确认作为用户通知发送。有关使用 Amazon SNS 发送 SMS 消息的更多信息，请参阅 [移动文本消息与 Amazon SNS](sns-mobile-phone-number-as-subscriber.md)。

### 移动推送通知
<a name="SNSMobilePushScenario"></a>

使用移动推送通知，可将消息直接推送到移动应用程序。例如，您可以使用 Amazon SNS 向应用程序发送更新通知。通知消息可以包含下载和安装更新的链接。有关使用 Amazon SNS 发送推送通知消息的更多信息，请参阅 [使用 Amazon SNS 发送移动推送通知](sns-mobile-application-as-subscriber.md)。

## Amazon SNS 的定价
<a name="welcome-pricing"></a>

Amazon SNS 没有前期成本。您将根据您发布的消息数量、传输的通知数量以及用于管理主题和订阅的任何其他 API 调用付费。传输定价因终端节点类型而异。您可以免费开始使用 Amazon SNS 免费套餐。有关信息，请参阅[全球短信定价](https://aws.amazon.com/sns/sms-pricing/)。