Amazon Simple Notification Service (SNS) 是AWS 中完全託管的訊息傳遞服務,可讓應用程式、服務和使用者以高度可擴展且靈活的方式傳送通知。 SNS 主要用於發布/訂閱(pub/sub) 訊息傳遞以及透過簡訊、電子郵件或行動推播通知直接向使用者發送通知。
SNS 的主要功能
- 發布/訂閱訊息: SNS 支援發布/訂閱模型,其中發佈到主題的訊息將傳遞到所有訂閱終端,例如Amazon SQS、AWS Lambda、HTTP/S 終端或電子郵件地址。
- 訊息過濾:訂閱者可以根據訊息屬性過濾訊息,確保只收到相關訊息。
- 直接訊息傳遞: SNS 支援透過簡訊、電子郵件和推播通知與行動裝置直接通訊。
- 安全和存取控制: AWS IAM(身分和存取管理)允許對SNS 主題進行細粒度的存取控制。
- 可擴充性和耐用性: SNS 旨在每秒處理數百萬條訊息,確保高可用性和耐用性。
- 訊息加密:支援使用AWS 金鑰管理服務(KMS) 對靜態訊息進行加密。
- AWS 整合: SNS 與SQS、Lambda 和CloudWatch 等AWS 服務無縫整合。
SNS用例
- 應用程式警報和監控:當AWS 服務滿足特定條件(例如EC2 實例故障或CloudWatch 警報)時,SNS 可以發送警報。
- 事件驅動的微服務: SNS 透過允許微服務非同步通訊來實現事件驅動架構。
- 用戶通知:用於向用戶發送簡訊、電子郵件和行動推播通知,以用於帳戶更新、促銷或身份驗證目的。
- 訊息扇出: SNS 可以將一則訊息分發到多個SQS 佇列,從而實現並行處理。
- IoT 設備通知:實作IoT 設備和後端服務之間的通訊。
Amazon SNS 的工作原理
- 創建主題:主題充當發布者發送訊息的邏輯存取點。
- 新增訂閱者:將訂閱者(例如Lambda 函數、SQS 佇列、電子郵件地址)會新增至主題。
- 發布訊息:應用程式向主題發布訊息。
- 傳遞給訂閱者: SNS 根據協議(HTTP、SQS、Lambda 等)將訊息傳遞給所有註冊訂閱者。
設定SNS的步驟
- 登入AWS 控制台並導航到SNS 服務。
- 建立SNS 主題:選擇主題類型(標準或FIFO)並配置設定。
- 新增訂閱者:附加電子郵件、簡訊、Lambda 或SQS 等訂閱者。
- 發布訊息:使用AWS 控制台、SDK 或CLI 向主題發布訊息。
- 監控SNS 活動:使用CloudWatch 監控傳輸狀態、訊息數量和其他指標。
定價
AWS SNS 採用基於發布的訊息數量、訊息傳遞嘗試次數和資料傳輸成本的按使用量付費定價模式。定價因使用的協議(SMS、電子郵件、Lambda、SQS 等)而異。
結論
Amazon SNS 是一種功能強大的訊息傳遞服務,可簡化分散式系統與最終使用者之間的通訊。無論是應用程式警報、事件驅動架構或直接使用者通知,SNS 都能在AWS 生態系統中提供可擴展、可靠且經濟高效的解決方案。

