

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 什麼是 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) 端點
+ Email
+ 行動推送通知
+ 行動文字訊息 (SMS)
+ Amazon Data Firehose
+ 服務提供者 （例如 Datadog、MongoDB、Splunk)

SNS 同時支援 Application-to-Application (A2A) 和 Application-to-Person (A2P) 訊息，提供在不同應用程式之間或直接傳送到行動電話、電子郵件地址等的彈性。

![\[Amazon SNS 會透過application-to-application(A2A) 和application-to-person(A2P) 端點，將訊息從發佈者傳遞給訂閱者。它顯示 Lambda 函數、Amazon SQS 佇列、HTTP/S 端點和 Data Firehose 等 A2A 端點，以及包括 SMS、行動推播通知和電子郵件的 A2P 端點，強調了 Amazon SNS 用於非同步、事件驅動型通訊的靈活性。 Amazon SQS\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/sns-delivery-protocols.png)


## 存取 Amazon SNS
<a name="welcome-accessing"></a>

視您偏好的互動方法而定 AWS CLI，您可以透過主控台或 AWS SDKs存取和管理 Amazon SNS。主控台為基本任務提供圖形界面，而 AWS CLI 和 SDKs為更複雜的使用案例提供進階組態和自動化功能。
+ 所以此 [Amazon SNS 主控台](https://console.aws.amazon.com/sns/v3/home)提供便利的使用者介面，用於建立主題和訂閱、傳送和接收訊息，以及監控事件和記錄。
+  AWS Command Line Interface (AWS CLI) 可讓您直接存取 Amazon SNS API 以進行進階組態和自動化使用案例。如需詳細資訊，請參閱[搭配 AWS CLI使用 Amazon SNS](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-sns.html)。
+ AWS 提供多種語言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_tw/sns/latest/dg/images/sns-fanout.png)


使用「發散」的另一個方法為使用您的測試環境複製傳送到生產環境的資料。延續前一個範例，您還可以為同一個 SNS 主題訂閱另一個 SQS 佇列，以處理新的訂單。透過將此新 SQS 佇列連接到測試環境，您便可利用從生產環境接收的資料，持續改進並測試您的應用程式。

**重要**  
在將任何生產資料傳送到測試環境之前，請務必考慮資料隱私權和安全性。

如需詳細資訊，請參閱下列資源：
+ [散發到 Firehose 交付串流](sns-firehose-as-subscriber.md)
+ [向 Lambda 函數發出 Amazon SNS 通知以進行自動化處理](sns-lambda-as-subscriber.md)
+ [向 Amazon SQS 佇列發出 Amazon SNS 通知以進行非同步處理 Amazon SQS](sns-sqs-as-subscriber.md)
+ [向 HTTPS 端點散發 Amazon SNS 通知](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 可以透過簡訊和電子郵件將這些通知傳送給指定的使用者。舉例來說，當某個事件發生時，您可以立即收到通知，例如針對 Amazon EC2 Auto Scaling 群組的特定變更、上傳到 Amazon S3 儲存貯體的新檔案或在 Amazon CloudWatch 中違反指標閾值。如需詳細資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)中的*設定 Amazon SNS 通知*。

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

Amazon SNS 可以將推送電子郵件訊息和文字訊息 (SMS 訊息) 傳送給個人或群組。例如，您可以將電子商務訂單確認作為使用者通知傳送。如需詳細資訊，請參閱 [使用 Amazon SNS 傳送行動簡訊](sns-mobile-phone-number-as-subscriber.md) 中的使用 Amazon SNS 訊息傳送簡訊。

### 行動推送通知
<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/)。