開始免費使用 AWS

建立免費帳戶

AWS 免費方案包括 100 萬則行動推送通知、100 萬封電子郵件交付,還有 Amazon SNS 的其他功能。

查看 AWS 免費方案詳細資訊 »

問:什麼是 Amazon Simple Notification Service (Amazon SNS)?

Amazon Simple Notification Service (Amazon SNS) 是一項 Web 服務,可從雲端輕鬆設定、操作和傳送通知。開發人員可使用這個可高度擴展、靈活且具經濟效益的功能從應用程式發布訊息,然後立即將這些訊息傳送給訂閱者或其他應用程式。該服務旨在降低開發人員進行 Web 規模運算的難度。Amazon SNS 遵循「發布-訂閱」(pub-sub) 簡訊傳送範例,使用「推送」機制將通知傳送到用戶端,無須定期檢查或「輪詢」新資訊和更新。Amazon SNS 使用的 API 非常簡單,前期無須投入過多的開發精力,也無維護或管理開銷,並且按實際用量付費,讓開發人員能夠透過一種簡單的機制將功能強大的通知系統融入他們的應用程式之中。

問:如何開始使用 Amazon SNS?

完成傳送散發通知 10 分鐘教學,只要幾個步驟就能建立 Amazon SNS 主題和發布訊息。

如需詳細資訊,請參閱 Amazon SNS Developer Guide資源中心的範本程式碼

問:使用 Amazon SNS 有哪些優點?

Amazon SNS 具備多種優勢,是建置和整合鬆散結合的分散式應用程式的多功能選項:

  • 以推送為基礎的即時交付 (無輪詢)
  • 簡單的 API,與應用程式輕鬆整合
  • 透過多種傳輸協定的靈活訊息交付
  • 經濟實惠、按實際使用量付費的模式,無須預付費用
  • 以 Web 為基礎的 AWS 管理主控台提供點選式界面的簡易性

問:Amazon SNS 通知有哪些使用範例?

Amazon SNS 服務可滿足各種需求,包括事件通知、監控應用程式、工作流程系統、時效性資訊更新、行動應用程式,以及產生或使用通知的任何其他應用程式。例如在工作流程系統,Amazon SNS 可用來在分散式電腦應用程式中轉送事件、在資料存放區之間移動資料或更新商業系統中的記錄。有關驗證、核准、庫存更改和出貨狀態的事件更新和通知,將會立即傳送到相關系統元件及最終使用者。常見的模式是使用 SNS 將訊息發布至 Amazon SQS 訊息佇列,以非同步方式可靠地將訊息傳送至一或多個系統元件。Amazon SNS 的另一種使用範例是,將時效性事件傳送到行動應用程式及裝置。由於 Amazon SNS 具備高可靠性和可擴展性,所以如果開發人員要建置倚賴即時事件的應用程式,則他們必定受益良多。

問:Amazon SNS 如何運作?

開始使用 Amazon SNS 非常簡單。首先,開發人員必須建立一個「主題」(即一個「存取點」) – 指出特定的主題或事件類型,以用來發布訊息並允許用戶端訂閱通知。建立主題後,主題擁有者可為其設定政策,例如,限制可以發布訊息或訂閱通知的人員,或者指定支援哪些通知通訊協定 (即 HTTP/HTTPS、電子郵件、SMS)。訂閱者是指有興趣從關注的主題接收通知的用戶端;他們可以訂閱主題,也可以由主題擁有者為其訂閱。訂閱者需要為傳送的通知指定通訊協定和終端節點 (URL、電子郵件地址等)。當發布者有需要通知訂閱者的資訊或更新時,他們可以向該主題發布一則訊息,這樣將立即觸發 Amazon SNS 向所有適用的訂閱者傳送該訊息。

問:Amazon SNS 與 Amazon SQS 有何不同?

Amazon Simple Queue Service (SQS) 和 Amazon SNS 都是 AWS 的簡訊服務,但為開發人員提供不同的優點。Amazon SNS 允許應用程式透過「推送」機制向多個訂閱者傳送時效性訊息,並且無須定期檢查或「輪詢」更新。Amazon SQS 是供分散式應用程式使用的訊息佇列服務,它透過輪詢模式交換訊息,可用來分開傳送和接收元件。Amazon SQS 使分散式應用程式元件可以靈活地傳送和接收訊息,無須要求每個元件同時可用。

常見的模式是使用 SNS 將訊息發布至 Amazon SQS 訊息佇列,以非同步方式可靠地將訊息傳送至一或多個系統元件。

問:Amazon SNS 與 Amazon MQ 有何不同?

Amazon MQ、Amazon SQS 和 Amazon SNS 是簡訊服務,適合新創公司到大型企業的各種工作人員使用。如果您使用現有應用程式來傳送簡訊,並想以輕鬆快速的方式將簡訊移到雲端,我們建議您考慮 Amazon MQ。它支援業界標準的 API 和協定,所以您可從任何標準訊息代理程式切換到 Amazon MQ,無須在應用程式重新編寫簡訊程式碼。如果您在雲端建立全新的應用程式,我們建議您考慮 Amazon SQS 和 Amazon SNS。Amazon SQS 和 Amazon SNS 是輕量型的全受管訊息佇列和主題服務,可以近乎無限地擴展,而且提供簡單易用的 API。您可以使用 Amazon SQS 和 SNS 來分離和擴展微型服務、分散式系統及無伺服器應用程式,並且提高可靠性。

問:如何開始使用 Amazon SNS?

若要註冊 Amazon SNS,請按一下 Amazon 詳細資訊頁面上的 "Sign up for Amazon SNS" 按鈕。您必須擁有一個 Amazon Web Services 帳戶才能存取此服務;如果還沒有該帳戶,則在您開始 Amazon SNS 註冊過程時,系統會提示您建立一個帳戶。註冊後,請參閱 Amazon SNS 文件和入門指南,以便開始使用 Amazon SNS。您可以使用 AWS 管理主控台輕鬆建立主題、新增訂閱者、傳送通知和編輯主題政策,所有的操作都能透過您的瀏覽器執行。

問:AWS 管理主控台是否支援 Amazon SNS?

AWS 管理主控台支援 Amazon SNS,並提供了點選式 Web 界面來存取和管理 Amazon SNS。使用 AWS 管理主控台,您可以建立主題、新增訂閱者和傳送通知,所有的操作都能透過您的瀏覽器執行。此外,使用 AWS 管理主控台可輕鬆將訊息發布到您所選擇的終端節點 (HTTP、SQS、Lambda、行動推送、電子郵件或 SMS),並可編輯主題政策以控制發布者和訂閱者的存取。

問:每個區域的 Amazon SNS 服務存取點各為何?

請參考 AWS 文件的 AWS Regions and Endpoints 部分,取得所有 Amazon SNS 服務存取點的最新清單。

問:是否可獲得從我的帳戶發起的 SNS API 呼叫的歷史記錄,以便用於安全分析和營運方面的故障排除?

是。SNS 支援 AWS CloudTrail,該服務是一種記錄帳戶的 AWS API 呼叫並為您提供日誌檔的 Web 服務。透過 CloudTrail,您可以獲得 API 發起人身分、API 呼叫時間、API 發起人來源 IP 地址、請求參數和 SNS 傳回的回應元素這類資訊的歷史記錄。

SNS 目前僅支援對經過驗證的呼叫進行 CloudTrail 稽核。現在不提供未經驗證的 ConfirmSubscription 和 Unsubscribe 呼叫的 CloudTrail 稽核日誌。如需詳細資訊,請參閱 SNS Developer Guide 的 CloudTrail 部分

要取得從您的帳戶發出的 SNS API 呼叫的歷史記錄,您只需在 AWS 管理主控台中開啟 AWS CloudTrail 即可。要進一步了解有關 AWS CloudTrail 的資訊,請按一下這裡


問:Amazon SNS 的費用是多少?

使用 Amazon SNS 沒有最低費用,您只需按實際使用量付費。使用者支付的費用為:每 100 萬個 Amazon SNS 請求 0.50 USD、每 100,000 個透過 HTTP 的通知交付 0.06 USD 以及每 100,000 個透過電子郵件的通知交付 2.00 USD。對於 SMS 簡訊,使用者可傳送 100 個免費的通知交付,而後續簡訊的費用隨目的地國家而有所不同。

Amazon SNS 還提供了免費方案,讓使用者可以開始免費使用 Amazon SNS。Amazon SNS 客戶每個月對於以下用量無須付費:前 100 萬個 Amazon SNS 請求、前 100,000 個透過 HTTP 傳送的通知、前 100 個透過 SMS 傳送的通知,以及前 1,000 個透過電子郵件傳送的通知。

有關定價和資料傳輸費用的其他詳細資訊,請參閱 Amazon SNS 詳細資訊頁面

問:使用 Amazon SNS 如何計價和收費?

開始使用服務時,沒有安裝費。每個月底將自動向您的信用卡收取當月使用費。只需登入您的 Amazon Web Services 帳戶,然後按 "Your Web Services Account" 下的 "Account Activity",即可隨時在 Amazon Web Services 網站上查看目前帳單期間的費用。

問:我的 Amazon SNS 的帳單週期怎麼計算?

您的 Amazon SNS 帳單週期從每月第一天開始,到每月的最後一天結束。您的每月費用將在每月結束時合計。

問:價格含稅嗎?

除非另有說明,否則我們的價格不包括適用的稅金和稅收 (包括加值稅和適用的營業稅)。帳單地址在日本的客戶若使用 AWS 服務,則需負擔日本消費稅。進一步了解


問:Amazon SNS 主題的格式為何?

主題名稱限制為 256 個字元。允許使用英數字元以及連字號 (-) 和底線 (_)。AWS 帳戶中的主題名稱必須是唯一的。刪除主題後,可以重新使用該主題名稱。當建立主題時,Amazon SNS 將指派唯一的 ARN (Amazon Resource Name) 給該主題,其中包括服務名稱 (SNS)、區域、使用者的 AWS ID 和主題名稱。API 呼叫會傳回 ARN 以用於建立主題。每當發布者或訂閱者需要對該主題執行任何動作,都應該參考該唯一主題 ARN。

下面是由 AWS 帳戶 ID 為 "123456789012" 的使用者建立並在美國東部區域託管的名為 "mytopic" 的主題 ARN:

arn:aws:sns:us-east-1:1234567890123456:mytopic注意:使用者不應該嘗試從其單獨的元件建置主題 ARN,應一律使用 API 呼叫傳回的名稱來建立主題。

問:Amazon SNS 可使用哪些操作?哪些人可執行這些操作?

Amazon SNS 提供一組簡單的 API 以便為主題擁有者、訂閱者和發布者啟用事件通知。

擁有者的操作:

  • CreateTopic – 建立新主題。
  • DeleteTopic – 刪除以前建立的主題。
  • ListTopics – 列出特定使用者 (AWS ID) 擁有的主題。
  • ListSubscriptionsByTopic – 列出特定主題的訂閱
  • SetTopicAttributes – 設定/修改主題屬性,包括設定和修改發布者/訂閱者許可、支援的傳輸協定等
  • GetTopicAttributes – 取得/查看主題現有的屬性
  • AddPermission – 向所選的使用者授與指定動作的存取權限
  • RemovePermission – 移除所選使用者對於指定動作的許可

訂閱者的操作:

  • Subscribe – 註冊對特定主題的新訂閱,這會從 Amazon SNS 產生一則確認訊息
  • ConfirmSubscription – 回應訂閱確認訊息,確認從所訂閱的主題接收通知的訂閱請求
  • UnSubscribe – 取消以前註冊的訂閱
  • ListSubscriptions – 列出特定使用者 (AWS ID) 擁有的訂閱

發布者的操作:

  • Publish:向主題發布新的訊息。

問:為什麼有兩種不同的 API 用於列出訂閱?

用於列出訂閱的兩種 API 會執行不同的功能並傳回不同結果:

  • ListSubscriptionsByTopic API 允許主題擁有者查看所有主動註冊了某主題的訂閱者清單。
  • ListSubscriptions API 允許使用者取得其所有有效訂閱 (關於一個或多個主題) 的清單。

問:接收通知時可使用哪些不同的交付格式/傳輸方式?

為了讓客戶在選擇交付機制時擁有充分的靈活性,Amazon SNS 支援透過多種傳輸協定來傳送通知。客戶可以選擇下列傳輸方式作為訂閱請求的一部分:

  • "HTTP"、"HTTPS" – 訂閱者在註冊訂閱時指定 URL;透過 HTTP POST 將通知傳送到指定的 URL。
  • 「電子郵件」、「電子郵件 JSON」 – 訊息以電子郵件形式傳送到註冊的地址。「電子郵件 JSON」以 JSON 物件的形式傳送通知,而「電子郵件」則是傳送文字型的電子郵件。
  • "SQS" – 使用者可以將 SQS 標準佇列指定為終端節點;Amazon SNS 會將通知訊息加到指定的佇列 (然後,訂閱者就可以使用 ReceiveMessage、DeleteMessage 等 SQS API 進行處理)。請注意,目前不支援 FIFO 佇列。
  • "SMS" – 訊息以 SMS 文字訊息的形式傳送到註冊的電話號碼。

問:主題擁有者是否可以控制他們所建立/擁有的主題中允許的傳輸方式?

主題擁有者可以透過存取控制政策設定適當的許可,為其主題設定特定的傳輸方式。

問:擁有者如何設定存取控制政策?

請參閱 Amazon SNS 入門指南了解設定存取控制政策的概觀。

問:單一主題是否支援透過多種通訊協定/傳輸方式進行訂閱?

Amazon SNS 主題訂閱者可以透過主題支援的任何傳輸協定接收通知。主題可透過多種傳輸協定支援訂閱和通知交付。

問:訂閱者是否可以選擇只接收發布至某主題的一小部分訊息?

是,您可以使用 Amazon Simple Notification Service (SNS) 上的訊息篩選功能,建立更簡單流暢的發布/訂閱架構。訊息篩選功能讓 Amazon SNS 主題的訂閱者只會接收到他們感興趣的一小部分訊息,而不會接收到發布至某個主題的所有訊息。如需詳細資訊,請嘗試篩選發佈到主題的訊息 10 分鐘教學,或參閱文件

問:Amazon SNS 是否可與其他 AWS 服務搭配使用?

Amazon SNS 可與 Amazon SQS、Amazon EC2 和 Amazon S3 等其他 AWS 服務搭配使用。下面是一個訂單處理工作流程系統如何將 Amazon SNS 與 Amazon EC2、SQS 和 SimpleDB 搭配使用的範例。在這個工作流程系統中,每當發生交易或訂單在訂單處理流程中前進時,應用程式元件之間都會傳送訊息。客戶最初下達訂單時,會先在 Amazon SimpleDB 中記錄交易,然後 Amazon EC2 上執行的應用程式將訂單請求轉發到付款處理器,從客戶的信用卡或銀行帳戶中扣款。核准後,將訂單確認訊息發布到 Amazon SNS 主題。在這種情況下,該主題包括多種電子郵件/HTTP 訂閱者 (商家、客戶和供應鏈合作夥伴),Amazon SNS 針對該主題傳送的通知可即時提供所有訂閱者付款處理成功的更新資訊。您也可使用通知來協調 EC2 上執行的訂單處理系統,其中透過 HTTP 傳送的通知可觸發相關元件 (例如,庫存系統或出貨服務) 中的即時處理。透過整合 Amazon SNS 與 Amazon SQS,所有傳送的通知也會保留在 Amazon SQS 佇列中,未來由稽核應用程式進行處理。

問:所有提供 AWS 服務的區域是否都可使用 Amazon SNS?

請參考 AWS 文件的 AWS Regions and Endpoints 部分,取得 Amazon SNS 可用性的最新資訊。

問:客戶需要多久才能使用以前的主題名稱重新建立主題?

通常,大約在刪除名稱相同的舊主題 30-60 秒後,便可重新使用該主題名稱。確切的時間取決於該主題上有效的訂閱數 – 主題訂閱者越少,重新使用需等待的時間就越短,主題訂閱者越多,等待的時間就越長。


問:使用者如何訂閱透過電子郵件傳送的通知?

要接收特定主題的電子郵件通知,訂閱者應將通訊協定指定為「電子郵件」或「電子郵件 JSON」,並提供有效的電子郵件地址作為終端節點。使用 AWS 管理主控台或直接呼叫 Amazon SNS API 即可完成此操作。然後,Amazon SNS 將傳送一個包含確認連結的電子郵件到指定的電子郵件地址,並要求監控該電子郵件地址的使用者明確同意接收該特定主題的電子郵件通知。使用者透過按一下提供的連結確認訂閱後,系統將向該電子郵件地址傳送此主題下發布的所有訊息。

問:為什麼 Amazon SNS 提供兩種不同的傳輸方式,以透過電子郵件接收通知?

這兩種電子郵件傳輸方式提供給兩種不同的客戶/最終使用者類型。「電子郵件 JSON」傳送 JSON 物件形式的通知,適用於以程式設計方式處理電子郵件的應用程式。「電子郵件」傳輸適用於最終使用者/消費者,通知為普通的文字訊息,易於閱讀。

問:使用者是否可更改透過電子郵件/電子郵件 JSON 傳送的通知的主題和顯示名稱?

Amazon SNS 允許使用者將電子郵件的 "Subject" 欄位指定為從 Publish API 呼叫中傳入的參數,而且每個已發布的訊息都可以是不同的。使用 SetTopicAttributes API 可設定主題的顯示名稱 – 該名稱適用於從此主題傳送的所有電子郵件。

問:要接收 Amazon SNS 的通知,訂閱者是否需要對其電子郵件設定進行特別的設定?

大多數情況下,使用者無須特別操作即可接收 Amazon SNS 的訂閱確認和通知。不過,有時候電子郵件供應商的預設設定或其他使用者特定的設定會誤將電子郵件重新導向到垃圾郵件資料夾。為確保使用者可看到 Amazon SNS 傳送的確認訊息和通知,可以將 "no-reply@sns.amazonaws.com" 新增到連絡人清單,並檢查其垃圾郵件資料夾中是否有 Amazon SNS 的訊息。

問:如果傳入 SQS 佇列做為終端節點,使用者是否需要在訂閱前建立佇列?佇列需要哪些許可?

使用者應使用 SQS 主控台,先建立 SQS 佇列,然後才能讓它訂閱主題。在主控台上選擇此佇列,並從功能表列的 "Queue Actions" 下拉式清單中選擇 "Subscribe Queue to SNS Topic"。在訂閱對話方塊,從 "Choose a Topic" 下拉式清單中選擇主題,然後按一下 "Subscribe" 按鈕。要獲得完整的逐步說明,請參閱 Amazon SNS 文件

問:Amazon SQS FIFO 佇列是否與 Amazon Simple Notification Service (SNS) 相容?

Amazon SNS 目前不支援將訊息轉寄到 Amazon SQS FIFO 佇列。您可以使用 SNS 將訊息轉寄到標準佇列。

問:開發人員需要如何設定 Amazon SQS 佇列以接收 Amazon SNS 通知?

要讓 Amazon SNS 傳送通知到 SQS 佇列,開發人員應訂閱一個主題,指定 "SQS" 為傳輸方式,並指定有效的 SQS 標準佇列為終端節點。為了使 SQS 佇列能夠接收來自 Amazon SNS 的通知,該 SQS 佇列擁有者必須訂閱有關 Amazon SNS 主題的 SQS 佇列,以便成功地向佇列傳送訊息。

如果訂閱的 Amazon SNS 主題和接收通知的 SQS 佇列為同一個使用者所擁有,則無須進行其他操作。發布到該主題的任何訊息將自動傳送到指定的 SQS 佇列。如果 SQS 佇列擁有者不是該主題的擁有者,則 Amazon SNS 將要求明確確認訂閱請求。

有關 SQS 佇列訂閱主題以及為 SQS 佇列設定存取控制政策的更多詳細資訊,請參閱 Amazon SNS 文件

問:如何向多個 SQS 佇列散發相同的訊息?

首先,使用 SNS 建立一個 SNS 主題。然後,建立多個 SQS 標準佇列並使其訂閱該 SNS 主題。現在,無論何時訊息發送到 SNS 主題,都會被散發到 SQS 佇列,也就是說,SNS 會將該資訊提交給所有訂閱該主題的 SQS 佇列。

問:Amazon SNS 傳送的結構化通知訊息是什麼格式?

由 Amazon SNS 傳送並透過 HTTP、HTTPS、電子郵件 JSON 和 SQS 傳輸通訊協定交付的通知訊息包含一個簡單的 JSON 物件,它由下列資訊組成:

  • MessageId:通用唯一識別符,每個發布的通知只會有一個唯一的識別符。
  • Timestamp:發布通知的時間 (GMT 時間)。
  • TopicArn:此訊息發布到的主題
  • Type:交付訊息的類型,對於通知交付,將設定為 "Notification"。
  • UnsubscribeURL:取消訂閱此主題終端節點並防止接收任何更多通知的連結。
  • Message:從發布者接收到的訊息承載 (本文)。
  • Subject:"Subject"欄位 – 如果作為可選參數,隨同訊息包含在 publish API 呼叫中。
  • Signature:Message、MessageId、Subject (如果有)、Type、Timestamp 和 Topic 值的 Base64 編碼 "SHA1withRSA"簽章。
  • SignatureVersion:使用的 Amazon SNS 簽章版本。

透過「電子郵件」傳輸方式傳送的通知訊息僅包含從發布者接收到的承載 (訊息本文)。

問:使用者如何訂閱透過 SMS 傳送的通知?

請參閱下面的「SMS 相關問題」一節。


問:使用者將訊息傳送到我的主題時,該如何保護訊息的安全?

針對 Amazon SNS 發出的所有 API 呼叫都會根據該使用者的 AWS ID 和簽章進行驗證。此外,我們建議使用者連接到安全的 SSL 終端節點,確保透過網路傳輸資料的安全性。

問:誰可以建立主題?

只有已註冊 Amazon SNS、具有有效 AWS ID 的使用者才能建立主題。建立主題最簡單的方式是使用 AWS 管理主控台。此外,也可以透過 CreateTopic API 建立。以下網址 http://aws.amazon.com/console 提供 AWS 管理主控台

問:多個使用者是否可以向單一主題發布訊息?

主題擁有者可以設定明確許可,以允許多個使用者 (具有有效 AWS ID) 向一個主題發布訊息。在預設情況下,只有主題擁有者擁有向主題發布訊息的許可。

問:擁有者如何授與/撤銷主題的發布或訂閱許可?

AddPermission 和 RemovePermission API 提供簡潔的界面,供開發人員新增和移除主題的許可。不過,對於條件性存取和更進階的使用案例,使用者則應使用存取控制政策來管理許可。管理許可最簡單的方式是使用 AWS 管理主控台。以下網址 http://aws.amazon.com/console 提供 AWS 管理主控台

問:主題擁有者如何授與訂閱者存取權限?訂閱者是否必須擁有有效的 AWS ID?

無論使用者是否擁有 AWS ID,Amazon SNS 都能讓他們輕鬆接收通知。主題擁有者可使用存取控制政策為主題設定適當的許可,以便對訂閱者授與/限制存取權限。使用者可透過兩種方式從 Amazon SNS 接收通知:

  • 擁有 AWS ID 的使用者:擁有有效 AWS ID 的訂閱者 (請參閱此連結以了解如何取得 AWS ID 的詳細資訊) 可以直接訂閱任何主題 – 只要主題擁有者已授與他們許可。AWS ID 將在訂閱註冊時予以驗證。
  • 其他使用者:主題擁有者可以代表沒有 AWS ID 的使用者訂閱和註冊終端節點。

在以上兩種情況下,訂閱終端節點的擁有者都需要透過回覆 Amazon SNS 傳送的確認訊息,明確同意並確認訂閱。

問:Amazon SNS 如何對 API 呼叫進行驗證?

對 Amazon SNS 發出的所有 API 呼叫都會進行身分驗證,其方法是要求使用 AWS ID 帳戶的私密金鑰簽署請求,並驗證包含在請求中的簽章。

問:Amazon SNS 如何驗證訂閱請求,以確保通知不會作為垃圾郵件傳送給使用者?

訂閱註冊時,Amazon SNS 將確保通知僅傳送到已註冊的有效訂閱者/終端節點。為防止垃圾郵件並確保訂閱者終端節點確實想接收特定主題的通知,Amazon SNS 將透過「2 步式交握」要求訂閱者明確同意接收:

i. 當使用者首次呼叫 Subscribe API 並訂閱終端節點時,Amazon SNS 將向指定的終端節點傳送確認訊息。

ii.當終端節點收到確認訊息後,訂閱者應傳送有效回覆確認訂閱請求。Amazon SNS 只有在此時才會將訂閱請求視為有效。如果對詢問沒有回應,Amazon SNS 則不會向該終端節點傳送任何通知。確認訂閱的具體機制因所選的傳輸通訊協定而有所不同:

  • 對於 HTTP/HTTPS 通知,Amazon SNS 首先會向指定的 URL 發布確認訊息 (包含字符)。監控 URL 的應用程式必須使用包含的字符呼叫 ConfirmSubscription API。
  • 對於電子郵件和電子郵件 JSON 通知,Amazon SNS 會向指定位址傳送電子郵件,其中包含嵌入連結。使用者需要按一下該嵌入連結來確認訂閱請求。
  • 對於 SQS 通知,Amazon SNS 會將包含字符的詢問訊息排入指定的佇列。監控佇列的應用程式必須使用該字符呼叫 ConfirmSubscription API。

注意:如果您向您 Amazon SNS 主題訂閱 Amazon SQS 佇列,且兩者屬於同一個 AWS 帳戶「所有」,在這種特殊情況下,您不必執行上述明確「同意」步驟。

問:等待確認時,訂閱請求需要在待處理狀態保持多久時間?

訂閱請求期間傳送到終端節點的確認訊息中所含的字符有效期為 3 天。

問:誰可以更改主題的許可?

只有主題擁有者可以更改該主題的許可。

問:使用者如何驗證通知訊息是從 Amazon SNS 傳送的?

為確保通知的真實性,Amazon SNS 將使用密碼編譯安全、非對稱式機制 (以憑證為基礎的私有-公開金鑰對) 來簽署所有通知交付。Amazon SNS 會將其憑證發布到使用者熟知的位置 (例如,在美國東部區域為 http://sns.us-east-1.amazonaws.com/SimpleNotificationService.pem),並使用該憑證的私有金鑰簽署訊息。開發人員/應用程式可使用該憑證的公開金鑰取得憑證並驗證通知中的簽章,以確保該通知確實是由 Amazon SNS 傳送的。有關憑證位置的更多詳細資訊,請參閱 Amazon SNS 詳細資訊頁面。

問:發布者是否也需要簽署訊息?

Amazon SNS 要求擁有 AWS ID 的發布者使用其 AWS 密鑰簽署訊息以進行驗證,然後再由 Amazon SNS 驗證簽章。

問:發布者/訂閱者是否可使用 SSL 確保訊息的安全性?

是,發布者和訂閱者都可使用 SSL 協助確保傳送和接收訊息的通道安全。發布者可透過 HTTPS 連接到 Amazon SNS,並經由 SSL 通道發布訊息。訂閱註冊時,訂閱者應註冊一個啟用了 SSL 的終端節點,這樣通知將透過 SSL 通道傳送給終端節點。

問:訂閱者要允許 Amazon SNS 向註冊的終端節點傳送通知,需具有什麼許可?

接收通知的終端節點擁有者必須向 Amazon SNS 授與向該終端節點傳送訊息的許可。

問:如何取消訂閱?

訂閱者可以透過主題擁有者、訂閱擁有者或其他方式取消訂閱,其取決於確認訂閱請求所使用的機制。

  • 透過在呼叫 ConfirmSubscription API 時將 AuthenticateOnUnsubscribe 旗標設定為 True 而確認的訂閱,它們只能由主題擁有者或訂閱擁有者取消訂閱。
  • 如果訂閱是匿名確認,並沒有將 AuthenticateOnUnsubscribe 旗標設定為 True,則可以匿名將其取消訂閱。

在所有情況下,除非由訂閱擁有者取消訂閱,否則都會向終端節點傳送一則最終取消訊息,以方便終端節點擁有者重新訂閱該主題 (特別是無意中發出取消訂閱請求或出現錯誤的情況)。有關 ConfirmSubscription API 的更多詳細資訊,請參閱 Amazon SNS 文件。


問:Amazon SNS 是否符合 HIPAA 資格?

是,AWS HIPAA 合規計劃中的 HIPAA 合格服務包含 Amazon SNS。如果您擁有與 AWS 共同履行的商業夥伴協議 (BAA),現在可以使用 Amazon SNS 建立 HIPAA 合規應用程式。如果沒有 BAA 或對在 HIPAA 合規應用程式使用 AWS 有任何問題,請聯絡我們以取得詳細資訊。

要進一步了解,請參閱以下資源:

如需涵蓋 Amazon SNS 的最新合規計劃清單,請參閱 合規計劃的 AWS 服務範圍

問:Amazon SNS 還符合哪些規範?

請參閱合規計劃的 AWS 服務範圍,了解關於 SNS 和其他 AWS 服務的最新資訊。


問:我的資料發布到 Amazon SNS 後的可靠性如何?

Amazon SNS 將所有主題和訊息資訊儲存在 Amazon 經過驗證的網路基礎設施和資料中心。至少會有三個資料副本跨多個可用區域存放,這表示不會發生單一電腦或網路故障便造成 Amazon SNS 無法存取的情形。

問:一則通知是否會包含多則訊息?

否,所有通知訊息只包含一則發布的訊息。

問:每則訊息會讓訂閱者收到多少次?

雖然大多數情況下每則訊息只會向您的應用程式傳送一次,但 Amazon SNS 的分散式特點和瞬息萬變的網路條件可能導致訂閱者端偶爾收到重複的訊息。開發人員應將其應用程式設計為多次處理一則訊息,不會產生任何錯誤或不一致性。

問:訊息是否會按其發布的確切順序傳送給我?

Amazon SNS 服務將嘗試按訊息發布到主題的順序傳送發布者的訊息。不過,網路問題可能會導致訂閱者端的訊息順序錯亂。

問:是否可刪除已發布的訊息?

否,一旦將訊息成功發布到主題,就無法再撤銷。

問:Amazon SNS 是否保證可將訊息交付到訂閱的終端節點?

在訊息發布到主題後,Amazon SNS 將嘗試向註冊該主題的所有訂閱者傳送通知。由於潛在的網際網路問題或電子郵件交付限制,有時通知可能無法成功送達 HTTP 或電子郵件終端節點。如果是 HTTP,可使用 SNS 交付政策來控制重試模式 (線性、幾何、指數退避)、最大和最小重試延遲以及其他參數。如果成功處理所有發布的訊息具有非常重要的意義,則開發人員還應將通知傳送到 SQS 佇列 (除了透過其他傳輸方式傳送通知外)。

問:如果訂閱終端節點無法使用,會對 Amazon SNS 訊息造成什麼狀況?

傳送至 SNS 的所有訊息都會立即處理並交付。如果訊息無法在第一次嘗試時便成功交付,SNS 會進行四階段重試政策:1) 各次嘗試之間不延遲便重試,2) 各次嘗試之間以最低延遲重試,3) 以某種退避模型 (線性或指數) 重試,以及 4) 各次嘗試之間以某種最大延遲重試。 

每種終端節點的政策各有不同,如下所示。

  • SQS:如果 SQS 佇列無法使用,SNS 將會在 SNS 捨棄訊息之前立即重試 10 次,然後以 20 秒的間隔重試 100,000 次,在超過 23 天的時間內進行總共 100,010 次嘗試。
  • Lambda:如果 Lambda 無法使用,SNS 將會在 SNS 捨棄訊息之前以 1 秒的間隔重試兩次,然後以指數方式從 1 秒漸退至 20 分鐘重試 10 次,最後以 20 分鐘的間隔重試 38 次,在超過 13 小時的時間內進行總共 50 次嘗試。 
  • HTTP/S:可以針對與特定主題關聯的 HTTP/S 終端節點設定交付政策。每個交付政策皆可包含重試政策和流量政策。例如,重試政策可以指定重試的最小/最大延遲、延遲前進行的重試次數,以及用於重試的退避類型 (線性、指數或算術方法)。  重試次數用盡之後,便會從 SNS 刪除訊息。流量政策是以每個訂閱的每秒最多交付嘗試次數定義。您可以在 Setting Amazon SNS Delivery Retry Policies for HTTP/HTTPS Endpoints 找到更多相關資訊。
  • 電子郵件:如果電子郵件終端節點無法使用,SNS 將會在 SNS 捨棄訊息之前立即重試一次,接著以 10 秒的間隔重次 1 次,然後以線性方式從 10 秒漸退至 5 分鐘重試 10 次,最後每 5 分鐘重試 90 次,在超過 7 小時的時間內進行總共 102 次嘗試。
  • 行動推送:如果行動終端節點無法使用,SNS 將會在 SNS 捨棄訊息之前以立即重試兩次,接著以 20 秒的間隔重試 5 次,然後以指數方式從 20 秒漸退至 20 分鐘重試 31 次,最後以 20 分鐘的間隔重試 12 次,在超過 4 小時的時間內進行總共 50 次嘗試。
  • SMS:如果 SMS 終端節點無法使用,SNS 將會在 SNS 捨棄訊息之前以 1 秒的間隔重試兩次,然後以指數方式從 1 秒漸退至 10 分鐘重試 10 次,最後以 10 分鐘的間隔重試 38 次,在超過 6 小時的時間內進行總共 50 次嘗試。

問:新的全球 SMS 功能有哪些特色?

您可以使用 Amazon SNS 將 SMS (文字) 訊息交付到超過 200 個國家,而且不像以往一樣收件人需要明確選擇加入。如果當地法律和規定要求,您必須先取得收件人的許可,才能將 SMS 訊息傳送到收件人的電話號碼。此外,您現在可以將 SMS 訊息標示為「交易」以針對交付的可靠性進行優化,或者標示為「促銷」針對成本節省加以優化。您還可以設定帳戶級和訊息級消費限制,以避免不小心超支。

問:什麼時候應該將 SMS 訊息標示為「交易」?

對您的業務而言屬於高優先順序的 SMS 訊息應該標示為「交易」。這可確保包含單次密碼 (OTP) 或 PIN 等內容的訊息以最高交付可靠性透過路由交付。在美國以外的國家,這些路由的費用通常較「促銷」簡訊路由昂貴。請勿將行銷訊息標示為「交易」,因為這違反某些國家的當地法規政策,您的帳戶可能因此被標示為濫用和暫停使用。

問:什麼時候應該將 SMS 訊息標示為「促銷」?

包含行銷簡訊的 SMS 訊息應該標示為「促銷」。Amazon SNS 可確保這類訊息以合理的交付可靠性進行路由傳送,但價格比最可靠的路由便宜很多。這也可讓 Amazon SNS 以符合當地法律和規定的方式處理和交付訊息。

問:什麼是帳戶級和訊息級消費限制,它們如何運作?

您可以針對 AWS 帳戶和個別訊息指定消費限制,而且該限制只適用於傳送 SMS 訊息的費用。

每個帳戶的預設消費限制 (如果未指定) 是每個月 1.00 USD。如果您要提高限制,請提交 SNS 提高限額案例。在 New limit value 中,請輸入您想要的每月消費限制。在 Use Case Description 欄位中指明您要申請提高 SMS 每月消費限制。

當 SMS 流量的總成本低於該日曆月的消費限制時,Amazon SNS 會傳送您發布的 SMS 訊息。一旦超過消費限制,Amazon SNS 就會停止交付訊息,直到您提高消費限制或新的日曆月開始為止。同樣地,您也能指定個別訊息的消費限制,只有在成本低於限制時,Amazon SNS 才會傳送訊息。如果超過帳戶級消費限制,則無論是否超過訊息級消費限制,Amazon SNS 都不會傳送您的 SMS 訊息。

問:是否支援雙向 SMS?

Amazon SNS 目前不支援雙向 SMS 功能,除了依當地法規所定不得如此時例外。

問:是否需要訂閱 SNS 主題的電話號碼,才能傳送 SMS 訊息到該主題?

您不再需要訂閱 Amazon SNS 主題的電話號碼,就能發布訊息到該主題。現在,您可以使用 Amazon SNS 主控台或 Amazon SNS API 中的發布請求,直接將訊息發布到電話號碼。

問:是否可以向 AWS 購買短碼?

是。您可以預訂指派給帳戶且為您專屬的專用短碼。

若要預訂短碼,請使用 AWS 支援中心建立案例。如需詳細資訊,請參閱 Amazon SNS Developer GuideReserving a Dedicated Short Code for SMS Messaging

如需定價資訊,請參閱全球 SMS 定價

問:是否可以向 AWS 購買長碼?

否。AWS 目前並未提供長碼購買。

問:SMS 通知是否來自短碼或長碼的特定號碼?

Amazon SNS 使用長碼或短碼集區傳送 SMS 通知。雖然 SMS 通知可能來自多個號碼,但 Amazon SNS 可確保從 AWS 帳戶傳送到特定電話號碼的訊息永遠來自相同的長碼或短碼。這稱為「粘性寄件者 ID」。

您可以預訂專用短碼,以確保您透過 Amazon SNS 傳送的所有 SMS 訊息都有一致的短碼。透過預訂短碼,您可以讓對方輕鬆認出您的組織就是訊息的來源。如需詳細資訊,請參閱 Amazon SNS Developer Guide 中的 Reserving a Dedicated Short Code for SMS Messaging

問:Amazon SNS 在哪些國家支援全球 SMS?

Amazon SNS 支援超過 200 個國家,這個數量目前還在持續增加。請參閱 SMS 支援的國家清單,以取得完整的支援通話國家清單。

問:哪些 AWS 區域支援全球 SMS?

1) US-East-1 (維吉尼亞)、2) US-West-2 (奧勒岡)、3) EU-West-1 (都柏林)、4) 亞太區域 (東京)、5) 亞太區域 (新加坡),以及 6) 亞太區域 (雪梨)。

問:AWS 電話號碼是否變更?

是。Amazon SNS 使用長碼或短碼集區傳送 SMS 通知。因此,雖然 SMS 通知可能來自多個號碼,但 Amazon SNS 可確保從 AWS 帳戶傳送到特定電話號碼的訊息永遠來自相同的長碼或短碼。這稱為「粘性寄件者 ID」。

問:為何某些使用相同電訊廠商的裝置會從不同電話號碼收到訊息?

Amazon SNS 使用長碼或短碼集區傳送 SMS 通知。因此,雖然 SMS 通知可能來自多個號碼,但 Amazon SNS 可確保從 AWS 帳戶傳送到特定電話號碼的訊息永遠來自相同的長碼或短碼。這稱為「粘性寄件者 ID」。

問:傳送訊息到其他國家的電話號碼格式為何?

AWS 強烈建議在 "to" 和 "from" (如果適用) 欄位的所有電話號碼使用 E.164 號碼格式。請參閱 SMS 支援的國家清單,以取得完整的支援國家清單。

問:Amazon SNS 是否能夠判斷電話號碼來自行動電話、有線電話或 VoIP 號碼?

否。Amazon SNS 目前無法偵測電話號碼來自行動電話、有線電話或 VoIP。

問:是否支援 SMS 訊息的以時間為基礎交付或排程交付?

否。Amazon SNS 目前不支援以時間為基礎交付或排程交付。

問:如何追蹤 SMS 訊息的交付狀態?

透過啟用 Amazon SNS 的交付狀態功能,您可以取得每個訊息的下列資訊:訊息 ID、傳送時間、目的地電話號碼、處置、處置原因 (如果適用)、價格和暫留時間。

問:是否支援 MMS?

否。Amazon SNS 目前不支援 MMS 訊息。

問:從 Amazon SNS 接收 SMS 訊息的費用為何?

接收 SMS 訊息的費用取決於收件人的無線/行動電訊方案的資料和簡訊量。

問:收件人如何選擇退出從 AWS 接收 SMS 訊息?

收件人用下列任一項目來回覆訊息,即可使用裝置選擇退出:

  • ARRET (法文)
  • CANCEL
  • END
  • OPT-OUT
  • OPTOUT
  • QUIT
  • REMOVE
  • STOP
  • TD
  • UNSUBSCRIBE
若要退出,收件人必須將回覆傳送到 Amazon SNS 用來傳送訊息的長碼或短碼。收件人退出之後,就不會再收到 AWS 帳戶傳送給您的 SMS 訊息,除非您加入電話號碼。

問:如何知道收件人裝置是否已「選擇退出」全球 SMS?

SNS 主控台會顯示您帳戶中選擇退出的號碼清單。此外,Amazon SNS API 提供 ListPhoneNumbersOptedOut 請求,可列出選擇退出的電話號碼。

問:如果使用者選擇退出,是否會從 SNS 主題自動取消訂閱該號碼?

否。選擇退出不會取消訂閱 Amazon SNS 主題中的號碼,但會停用訂閱。這表示如果您選擇加入電話號碼,則不需要將電話號碼重新訂閱到主題。

問:如何確認最終使用者已收到 SMS 訊息?

您可以使用我們的交付狀態功能,以取得您 SMS 訊息最終處置的相關資訊。如需此功能的詳細資訊及使用方法,請參閱我們的文件

問:Amazon SNS 是否提供 SMS 訊息的交付回條?

我們的交付狀態功能會根據從目的地電訊廠商收到的交付回條提供資訊。如需交付狀態功能的詳細資訊及使用方法,請參閱我們的文件

問:SMS 是否支援交付到 Google Voice 或 Hangouts 等 VoIP 服務?

是。Amazon SNS 支援交付到可接收 SMS 訊息的 VoIP 服務。


問:哪裡可以找到每個國家目前的 SMS 定價?

我們的定價以目的地國家和電訊廠商做為依據,您可以在這裡查看定價。 

問:為何相同目的地國家和電訊廠商的 SMS 定價不斷變動?

SMS 產業的定價並非固定不變,而且傳送到不同國家和這些國家各電訊廠商的費用也會隨時間變化。Amazon SNS 採用透明的方法,並向客戶公開這些價格變動,讓您獲得最大的成本效益。

問:是否需要支付交付失敗或電訊廠商拒絕訊息的費用?

如果目的地電訊廠商回報您嘗試傳送訊息到無效的電話號碼,則可能需要支付交付失敗的費用。電話號碼無效的原因有很多,例如電話號碼不存在、電話持有人帳戶沒有足夠的積分,或者目的地號碼是有線電話號碼。

問:SMS 訊息是否有「免費方案」額度?

SMS 訊息有每月的免費方案額度。每個月傳送到美國電話號碼的前 100 個 SMS 訊息免費。傳送到美國的額外 SMS 訊息或任何傳送到非美國電話號碼的訊息都會依據這裡提供的目前定價計費。


問:每個主題是否有主題數量或訂閱者數量的限制?

SNS 預設為每個主題提供 1,000 萬個訂閱,為每個帳戶提供 100,000 個主題。如需請求提高限額,請聯絡 Support

問:訊息中可包含多少資料量以及哪些資料類型?

除了 SMS 訊息之外,Amazon SNS 訊息可包含最多 256 KB 的文字資料,包括 XML、JSON 和無格式文字。

接受以下 Unicode 字元:

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

(根據 http://www.w3.org/TR/REC-xml/#charsets)。

每 64 KB 區塊的已發布資料以 1 次請求計費。例如,一個 256 KB 承載的單一 API 呼叫將以四次請求計費。

SMS 訊息

每個 SMS 訊息最多可包含 140 位元組,字元限制則取決於編碼方式。例如,SMS 訊息可以包含:

  • 160 個 GSM 字元
  • 140 個 ASCII 字元
  • 70 個 UCS-2 字元

如果您發布的訊息超出大小限制,Amazon SNS 會將該訊息分成多個訊息來傳送,且每個訊息的大小都在限制範圍內。訊息不會在某個文字的中間切斷,而是以完整的文字為界線。單一 SMS 發布動作的總大小限制為 1600 位元組。

問:單一主題可以套用多少個訊息篩選條件?

根據預設,每個區域的每個帳戶可以在單一主題套用 100 個篩選政策。如果您需要更多的篩選條件,請聯絡我們。

問:是否應將一些 TCP 埠用於 SNS 和 EC2 之間的跨區域通訊?

是,在 80/443/4080//8443 以外的連接埠上進行的 SNS 和 EC2 間的跨區域通訊無法保證可正常運作,應避免使用。


問:什麼是原始訊息交付?

您可以選擇讓訊息以原始形式傳送,也就是和您發布時的訊息形式完全一樣。預設情況下,訊息會以 JSON 編碼進行傳送,JSON 編碼提供訊息和主題的中繼資料。原始訊息交付可以透過設定訂閱的 "RawMessageDelivery" 屬性來啟用。該屬性可以使用 AWS 管理主控台或使用 API SetSubscriptionAttributes 來設定。

問:如果未設定訂閱的原始訊息交付屬性,預設行為是什麼?

如果未設定該屬性,訊息會預設以 JSON 格式傳送,也就是目前的行為。這可確保現有的應用程式會繼續如期執行。

問:哪些類型的終端節點支援原始訊息交付?

SQS 和 HTTP 終端節點支援原始訊息交付支援。交付至 Lambda、電子郵件和 SMS 終端節點的行為方式將是相同的,不受 "RawMessageDelivery" 屬性影響。

問:原始訊息如何傳送至 HTTP 終端節點?

原始格式的訊息傳送至 HTTP/s 終端節點之後,HTTP POST 主體將會包含訊息本文。


問:什麼是 SNS 行動推送?

SNS 行動推送可讓您使用 Simple Notification Service (SNS) 來向 Apple、Google、Fire OS 和 Windows 裝置以及中國內具有百度雲推送功能的 Android 裝置傳送推送通知。使用推送通知功能,透過彈出有關某個事件的通知,安裝的行動應用程式可以立即通知其使用者而不用開啟應用程式。例如,如果您安裝了一個體育應用程式並啟用了推送通知,則該應用程式便可以將您最喜愛的球隊的最新分數傳送給您,即使您未執行該應用程式。通知會顯示在您的裝置上,當您得知其中的資訊後,可以啟動應用程式以顯示詳細資訊。使用者體驗與接收 SMS 類似,但是功能更強大且費用更低。

問:如何開始傳送推送通知?

推送通知只能傳送到有安裝您的應用程式的裝置,而且這些裝置的使用者選擇了接收推送通知。SNS 行動推送不需要使用者明確同意傳送推送通知,但是 iOS、Android 及 Kindle Fire 作業系統則需要使用者明確同意。為了透過 SNS 傳送推送通知,您同時還要在 SNS 中註冊您的應用程式和每個安裝了該應用程式的裝置。如需詳細資訊,請參閱 Using Amazon SNS Mobile Push Notifications

問:支援哪些推送通知平台?

目前支援下列推送通知平台:

  • Amazon Device Messaging (ADM)
  • Apple Push Notification Service (APNS)
  • Google Cloud Messaging (GCM)
  • 適用於 Windows 8 以上和 Windows Phone 8.1 以上版本的 Windows Push Notification Service (WNS)
  • 適用於 Windows Phone 7 以上版本的 Microsoft Push Notification Service (MPNS)
  • 適用於中國的 Android 裝置的百度雲推送

問:使用 SNS 免費方案可以傳送多少則推送通知?

SNS 免費方案包括 100 萬次發布,加上 100 萬次行動推送交付。因此您每月可以免費傳送 100 萬則推送通知。向所有行動推送終端節點傳送的通知累計起來可達到 100 萬則免費行動推送交付。

問:啟用推送通知是否需要對 SNS 行動推送進行任何特殊確認?

否,不需要。無論 SNS 是否傳送推送通知,最終使用者可以在初次執行應用程式時選擇接收推送通知。

問:是否需要修改我的用戶端應用程式以使用 SNS 行動推送功能?

SNS 不會要求您修改用戶端應用程式。百度雲推送要求無論您是否選擇使用 SNS 服務,都要將百度指定的元件新增到您的用戶端程式碼,以確保能正常運作。

問:SNS 主題如何在行動推送中運作?

SNS 主題可以包含來自任何支援的推送通知平台的訂閱者,以及任何其他終端節點類型,例如 SMS 或電子郵件。當您向某個主題發布通知時,SNS 會將該則訊息的相同副本傳送到訂閱該主題的每個終端節點。如果您使用平台特定的承載來定義傳送給每個推送平台的準確承載,當您超過相關推送通知平台所規定的最大承載時,您的發布操作將會失敗。

問:不同的目標平台各自支援何種規模的承載大小?

SNS 支援的最大承載大小與基本原生平台支援的大小相同。客戶可以使用 JSON 物件來傳送平台特定的訊息。請參閱 Using SNS Mobile Push API 了解更多詳細資訊。

問:平台特定的承載如何工作?

當您向主題發布內容並想要將自訂訊息傳送到不同推送通知平台的終端節點時,您需要選擇發布對話方塊中的 "Use different message body for different protocols" 選項,然後更新訊息。您可以使用平台特定的承載來指定轉送到每個推送通知服務的精確 API 字串。例如,您可以使用平台特定的承載透過 APNS 來操作您的 iOS 應用程式徽章計數。如需詳細資訊,請參閱 Using Amazon SNS Mobile Push Notifications

問:一個字符是否能訂閱多個主題?

是。每個字符可以訂閱的 SNS 主題沒有數量限制。

問:什麼是直接定址?直接定址何運作?

直接定址讓您可以將通知直接傳送給單一終端節點,而不是將相同的訊息傳送給一個主題的所有訂閱者。如果您想將精準定位的訊息傳送給每一位收件人,可以使用此功能。當您在 SNS 註冊裝置字符時,SNS 便會建立與此字符對應的終端節點。您可以像將內容發布到主題一樣來將內容發布到字符終端節點。您可以直接發布通知的文字,或利用平台特定功能 (例如更新應用程式的徽章計數) 的優勢發布平台特定承載。直接定址目前僅限推送通知終端節點。

問:SNS 是否支援 SMS 或電子郵件直接定址?

目前,直接定址僅支援行動推送終端節點 (APNS、GCM、ADM、WNS、MPNS、百度) 和 SMS。電子郵件簡訊需要使用主題。

問:SNS 行動推送如何處理通知服務中的字符回饋?

推送通知服務 (例如 APNS 和 GCM) 可提供關於字符過期或被新字符取代的回饋。如果 APNS 或 GCM 報告特定字符已過期或為無效,SNS 會自動「停用」與該字符關聯的應用程式終端節點,並透過事件通知您這項變更。特別是 GCM,有時候不只是指示字符為無效,也會在對 SNS 的回應中提供與應用程式終端節點關聯的新字符。發生這種情況時,SNS 會自動使用新的字符值來更新關聯的終端節點,讓終端節點保持啟用,然後透過事件通知您此變更。

問:是否能將現有應用程式遷移到 SNS 行動推送?

是。您可以透過主控台界面或 API 將現有裝置字符大量上傳到 Amazon SNS。透過上傳相關推送通知服務的登入資料,還可以在 SNS 註冊您的應用程式,並設定您的代理或應用程式以便將來在 SNS 註冊新的字符。

問:是否能透過 Amazon CloudWatch 監控我的推送通知?

是。SNS 發布的 Cloudwatch 指標包括已發布的訊息數量、成功通知的數量、失敗通知的數量和已發布資料的大小。指標以每個應用程式為單位提供。您可以透過 AWS 管理主控台或 CloudWatch API 存取 Cloudwatch 指標。

問:Amazon SNS 支援哪種 Windows 推送通知類型?

SNS 支援 Microsoft WNS 和 MPNS 提供的所有推送通知類型,包括 Toast、Tile、Badge 和 Raw 通知。使用 TYPE 訊息屬性指定您希望使用的通知類型。當您使用預設承載傳送相同的訊息至所有行動平台,SNS 預設會為 Windows 平台選擇快顯通知。當您使用平台特定的承載時,必須為 Windows 平台指定通知類型。

問:SNS 是否支援 Windows 原始推送通知?

是。您必須將通知承載編碼為文字才能透過 SNS 傳送原始通知。

問:什麼是百度雲推送?

百度雲推送是適用於 Android 裝置的第三方推送通知轉送服務選項。無論在中國的 Android 客戶選擇使用哪個 Android 應用程式商店下載應用程式,您都可以使用百度雲推送來聯繫他們。如需百度雲推送的詳細資訊,請瀏覽 http://developer.baidu.com/cloud/push

問:是否能從所有公有 AWS 區域發布百度通知?

是,SNS 支援在所有公有 AWS 區域發布百度推送通知。

問:是否可以將百度通知用於任何 Android 應用程式商店?

是,百度推送通知可以在透過 Android 應用程式商店安裝的應用程式上正常運作。

問:什麼是訊息屬性?

您可透過訊息屬性來提供有關訊息的結構化中繼資料項目 (如時間戳記、地理空間資料、簽章和識別符)。訊息屬性是選用的,與訊息本文 (但可隨之一起傳送) 分開。此資訊可以由訊息的接收者用於協助決定如何處理訊息,而不必先處理訊息本文。

您可以將 SNS 訊息屬性與 SQS 和行動推送終端節點搭配使用。要進一步了解有關訊息屬性的資訊,請參閱 SNS Getting Started Guide

問:SNS 中支援什麼訊息屬性?

SNS 針對各個終端節點類型支援不同的訊息屬性,這取決於其本身各自支援的終端節點類型。

  • 對於 SQS 終端節點,每則訊息最多可指定 10 個名稱類型值三元素。支援的類型包括:字串、二進位和數字 (包括整數、浮點數和雙精度數)。
  • 對於行動推送終端節點,您可以利用每個行動平台支援的特定訊息屬性 (如通知類型)。
問:什麼是存留時間 (TTL)?
 
您透過 SNS 傳送的某些訊息僅在有限時段內相關或具有價值。現在使用 Amazon SNS,您可以為每則訊息設定 TTL (存留時間) 值。當指定訊息超過 TTL 且沒有被最終使用者傳送或讀取時,該訊息即被刪除。TTL 以秒為單位並與發布呼叫的時間相關。
 
問:如何為訊息指定 TTL?
 
您可以使用主控台或透過 API 指定 TTL。使用以下訊息屬性可在發布訊息時指定 TTL。每個平台的屬性都不相同。為一個平台指定的屬性僅適用於交付到該平台的通知。
 
問:什麼是預設 TTL?
 
SNS 為所有行動平台採用的預設存留時間 (TTL) 為 4 星期。
 
問:TTL 訊息屬性是否會覆寫在訊息承載中指定的 TTL?
 
是。Google GCM 和 Amazon ADM 讓您能在訊息承載內指定 TTL。如果您在訊息承載內指定 TTL,同時還在訊息屬性內指定 TTL,則 SNS 將遵循訊息屬性。
 
問:如果我指定 TTL=0,會發生什麼情況?
 
有些平台將 TTL = 0 視為特殊案例處理,並嘗試立即傳送訊息,或者讓訊息過期。如果您指定 TTL = 0,則 SNS 會將您的訊息轉送到具有 TTL = 0 的適當服務,以便利用此特殊案例。
 
問:哪些 SNS 終端節點支援 TTL?
 
您可以透過以下行動推送終端節點使用 TTL:APNS、APNS_Sandbox、GCM、ADM、百度和 WNS。Microsoft MPNS 目前不支援 TTL。SQS、HTTP、電子郵件或 SMS 終端節點也不支援 TTL。
 
問:Amazon SNS 的交付狀態功能有何功用?
 
交付狀態功能可以協助您收集針對支援的行動通知平台所推送通知的一些資訊,包括成功率、失敗率和駐留時間等。目前支援的平台包括 Apple (APNS)、Google (GCM)、Windows (WNS 和 MPNS)、Amazon (ADM) 和百度。狀態資訊收集在由 Amazon SNS 代表您所建立的 Amazon CloudWatch 日誌群組中。此外,您還可以在 Amazon CloudWatch 中建立具有可操作性的指標並以您感興趣的模式觸發警示。
 
問:Amazon SNS 中的交付狀態功能是否只能用於行動推送通知?是否計劃為其他終端節點類型提供此功能?
 
目前交付狀態功能只能用於行動推送通知和 SMS。我們將根據客戶的回饋進行評估,確定是否對其他終端節點類型提供此功能。
 
問:如何啟用交付狀態功能?
 
您可以從 Amazon SNS 主控台啟用交付狀態功能。在您的應用程式中,選擇「應用程式動作」下拉式功能表中的「交付狀態」選項。關於詳細資訊,請參閱我們的 文件
 
問:是否能從 Amazon SNS API 啟用交付狀態功能?
 
是,新增相關的應用程式級屬性即可從 Amazon SNS API 啟用此功能。我們的 文件介紹了啟用此功能需要新增的應用程式級屬性以及必須進行的特定 API 呼叫。
 
問:交付狀態功能如何收費?
 
目前使用交付狀態功能不會產生額外的 Amazon SNS 費用。不過,根據您的使用情況,可能會因為使用 CloudWatch 而產生費用,因為這項功能會建立 Amazon CloudWatch 日誌群組。如需 CloudWatch 定價和免費方案的詳細資訊,請閱讀我們的 定價頁面
 
問:為什麼只選擇成功交付嘗試的取樣率而不是失敗交付嘗試的取樣率?
 
根據客戶的回饋,我們發現多數開發人員希望了解其應用程式所有的交付嘗試失敗的情況,並傾向於只儲存成功的交付樣本,而不是記錄所有項目。
 
問:如何根據故障指標或駐留時間指標設定警示?
 
啟用交付狀態功能後,您需要為 Amazon SNS 代表您建立的日誌群組在 Amazon CloudWatch 日誌中定義日誌指標篩選條件。該指標篩選條件可以定義為擷取您感興趣的資訊,例如失敗率和駐留時間。定義指標篩選條件後,您可以建立並指派給一個指標。該指標之後可以用於設定警示或根據定義的閾值傳送通知。如需詳細資訊,請瀏覽我們的 文件部落格
 

問:Amazon SNS 中的 AWS Lambda 終端節點支援有什麼意義?

透過將訊息發布到訂閱 AWS Lambda 函數的 Amazon SNS 主題,即可叫用 AWS Lambda 函數。因為 Amazon SNS 支援訊息散發,因此發布一則訊息可以叫用不同的 AWS Lambda 函數或叫用 Lambda 函數,還可將通知傳送給支援的 Amazon SNS 目的地,例如行動推送、HTTP 終端節點、SQS、電子郵件和 SMS。

問:什麼是 AWS Lambda?

AWS Lambda 是一種運算服務,可執行程式碼來回應事件並自動為您管理運算資源,讓您輕鬆建置可快速回應新資訊的應用程式。有關 AWS Lambda 的更多資訊以及如何建立 AWS Lambda 函數,請參閱這裡

問:AWS Lambda 函數和 Amazon SNS 有何作用?

透過將 AWS Lambda 函數訂閱到 Amazon SNS 主題,您可以執行自訂訊息處理。您可以叫用 AWS Lambda 函數來提供自訂訊息交付處理,方法是先將訊息發布到一個 AWS Lambda 函數,再讓 Lambda 函數修改一則訊息 (例如,對語言進行當地語系化),最後篩選這些訊息並將其路由到其他主題和終端節點。已經傳送 Amazon SNS 通知 (例如 Amazon CloudWatch) 的應用程式和服務現在可以立即利用 AWS Lambda 的優勢,不需要佈建或管理基礎設施來進行自訂訊息處理。您還可以使用交付到 AWS Lambda 函數功能做為發布到其他 AWS 服務的方法,例如 Amazon Kinesis 或 Amazon S3。您可以將 AWS Lambda 函數訂閱到 Amazon SNS 主題,然後讓 Lambda 函數轉而寫入至另一項服務。

問:如何啟動 Amazon SNS 中的 AWS Lambda 終端節點支援?

您首先需要透過 AWS 帳戶和 AWS Lambda 主控台建立一個 AWS Lambda 函數,然後使用 Amazon SNS 主控台Amazon SNS API 將該 AWS Lambda 函數訂閱到一個主題。以上操作完成後,您發布到已訂閱 Lambda 函數之 Amazon SNS 主題的所有訊息不但會發送到該主題訂閱的任何其他目的地,還會發送到適當的 Lambda 函數。

問:從 Amazon SNS 到 AWS Lambda 函數的訊息交付有何意義?

從 Amazon SNS 到 AWS Lambda 函數的訊息交付會建立 AWS Lambda 函數的執行個體,然後使用您的訊息作為輸入叫用該執行個體。如需訊息格式的詳細資訊,請參考 Amazon SNS 文件和 AWS Lambda 文件。

問:此功能的費用為何?

透過 Amazon SNS 發布訊息每 100 萬條請求 0.50 USD。除了使用 AWS 服務產生的費用外,將訊息發送到 AWS Lambda 函數不須支付額外的費用。Amazon SNS 提供每月 100 萬條請求的免費方案。如需詳細資訊,請瀏覽 Amazon SNS 定價。AWS Lambda 函數將根據您的函數請求次數和程式碼執行時間計費。AWS Lambda 免費方案包含每月 100 萬條請求以及每月 400,000 GB 秒的運算時間。如需詳細資訊,請瀏覽 AWS Lambda 定價

問:是否能將別人建立的 AWS Lambda 函數訂閱到我的 Amazon SNS 主題?

目前不允許 AWS 帳戶擁有者訂閱屬於其他帳戶的 AWS Lambda 函數。您可以將自己的 AWS Lambda 函數訂閱到自己的 Amazon SNS 主題,或將您的 AWS Lambda 函數訂閱到其他帳戶建立的 Amazon SNS 主題,只要該 SNS 主題的主題政策允許這樣的操作。

問:對於可以訂閱到 Amazon SNS 主題的 AWS Lambda 函數的數量有沒有限制?

Amazon SNS 處理 AWS Lambda 函數的方式與其他目的地一樣。根據預設,SNS 提供每個主題 1000 萬個訂閱。如需請求提高限額,請聯絡我們

問:可以將哪些資料傳送到 AWS Lambda 函數?

因 Amazon SNS 訊息交付而叫用的 AWS Lambda 函數,該 AWS Lambda 函數會透過 SNS 事件收到各種資料,包括訊息 ID、主題 ARN、訊息負載和訊息屬性。如需傳送到 AWS Lambda 函數之事件結構的詳細資訊,請閱讀我們的部落格

問:我是否能追蹤 AWS Lambda 函數訊息交付嘗試的訊息交付狀態?

若要追蹤訊息交付的成功或失敗狀態,您需要啟動 Amazon SNS 的交付狀態功能。如需如何啟動此功能的詳細資訊,請閱讀我們的部落格。

問:哪些區域提供 AWS Lambda?

請參閱 AWS Regions and Endpoints 以取得完整清單。

問:我的 AWS Lambda 函數需不需要與使用的 Amazon SNS 處在相同的區域?

您可以將 AWS Lambda 函數訂閱到任何區域中的 Amazon SNS 主題。

問:叫用 AWS Lambda 函數會不會產生任何資料傳輸費用?

將訊息交付到 AWS Lambda 函數才會產生資料傳輸費用。如需詳細資訊,請參閱我們的定價

問:AWS Lambda 函數的並行數量是否有限制?

AWS Lambda 目前支援每個 AWS 帳戶 100 條並行請求。如果交付到 AWS Lambda 的 Amazon SNS 訊息超過這些並行數量限制,則會阻斷 Amazon SNS 訊息交付。如果 AWS Lambda 阻斷了 Amazon SNS 訊息,則 Amazon SNS 將嘗試重新交付。如需 AWS Lambda 並行數量限制的詳細資訊,請參考 AWS Lambda 文件

問:Amazon SNS 是否能使用已經在其他服務 (例如 Amazon S3) 中使用的相同 AWS Lambda 函數?

您可以使用已經在其他服務中使用的相同 AWS Lambda 函數,只要此相同函數除了可分析其他服務的事件格式外,還能分析 Amazon SNS 中的事件格式即可。關於 SNS 事件格式,請閱讀我們的部落格

 

問:什麼是適用於 iOS 的 VoIP 推送通知?
在 iOS 8 和更新版本中,IP 電話 (VoIP) 應用程式可以註冊 VoIP 遠端通知,讓 iOS 可在使用者的傳入 VoIP 通話抵達時視需要啟動或喚醒應用程式。註冊 VoIP 通知的程序與在 iOS 上註冊一般推送通知的程序很類似。如需詳細資訊,請參閱我們的文件

問:我是否能在同一個 iOS 應用程式中同時使用 VoIP 推送通知和其他推送通知?
是,您可以註冊 iOS 應用程式以同時接收這兩種類型的推送通知。然而,除了一般推送通知憑證之外,您還需要向 Apple 取得 VoIP 推送通知憑證,並在 Amazon SNS 建立新的平台應用程式,然後選擇 Apple VoIP Push 作為平台類型。如需詳細資訊,請參閱我們的文件

問:什麼是 Mac OS 推送通知?
您現在可以使用 Amazon SNS 發送推送通知給執行 Mac OS X Lion (10.7) 或更新版本的 Mac OS 桌面。如需詳細資訊,請參閱我們的文件