View a markdown version of this page

Amazon SNS 訊息屬性 - Amazon Simple Notification Service

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

Amazon SNS 訊息屬性

Amazon SNS 支援傳遞訊息屬性,可讓您提供與訊息相關的結構化中繼資料項目 (例如時間戳記、地理空間資料、簽章及識別符)。啟用原始訊息交付以後,針對 SQS 訂閱最多可傳送 10 個訊息屬性。如要傳送超過 10 個訊息屬性,則必須停用原始訊息交付。具有 10 個以上訊息屬性且導向已啟用「原始訊息交付」的 Amazon SQS 訂閱的訊息,將會因用戶端錯誤而遭到捨棄。

訊息屬性為選用且與訊息內文分開,但與訊息內文一起傳送。接收者可以使用這項資訊來決定如何處理訊息,而不必先處理訊息內文。

如需使用 AWS 管理主控台 或 以屬性傳送訊息的詳細資訊 適用於 Java 的 AWS SDK,請參閱 使用 將訊息發佈至 Amazon SNS 主題 AWS 管理主控台教學課程。

注意

只有在訊息結構是字串而非 JSON 時,才會傳送訊息屬性。

您也可以使用訊息屬性來協助結構化行動裝置端點的推送通知訊息。在此情況下,訊息屬性只會用來協助結構化推送通知訊息。屬性不會交付到端點,與搭配訊息屬性將訊息傳送到 Amazon SQS 端點時不同。

您也可以使用訊息屬性,讓您的訊息可透過使用訂閱篩選政策進行篩選。您可以將篩選政策套用到主題訂閱。以設為 MessageAttributes (預設) 的篩選政策範圍套用篩選政策時,訂閱只會接收到擁有政策所接受屬性的訊息。如需詳細資訊,請參閱Amazon SNS 訊息篩選。

注意

使用訊息屬性進行篩選時,值必須是有效的 JSON 字串。這樣做可確保訊息傳遞至已啟用訊息屬性篩選的訂閱。

訊息屬性項目和驗證

每項訊息屬性均是由以下項目組成:

  • Name - 訊息屬性名稱可包含下列字元:A-Z、a-z、0-9、底線 (_)、連字號 (-) 和句號 (.)。名稱不能以句號開頭或結尾,且不可連續使用句號。名稱會區分大小寫,且不能與訊息的其他所有屬性名稱重複。名稱長度上限為 256 個字元。名稱無法以 AWS. 或 Amazon. (或任何外殼的變體) 開頭,因為這類字首會預訂給 Amazon Web Services 使用。

  • 類型 - 支援的訊息屬性資料類型為 String、String.Array、Number 和 Binary。資料類型內容上的限制與訊息內文相同。如需詳細資訊,請參閱 訊息屬性資料類型和驗證 一節。

  • 數值 - 使用者指定的訊息屬性數值。對於字串資料類型,值屬性必須遵循與訊息內文相同的內容限制。不過,如果訊息屬性用於篩選,則值必須是有效的 JSON 字串,以確保與 Amazon SNS 訂閱篩選政策的相容性。如需詳細資訊,請參閱 Amazon Simple Notification Service API 參考中 Publish (發佈) 動作。

名稱、類型和值不能為空或 null。此外,訊息本文不能為空或 null。訊息屬性的所有部分,包括名稱、類型和值,都包含在訊息大小限制中,這是主題設定的 MaximumMessageSize(預設 262,144 位元組)。如需詳細資訊,請參閱使用 Amazon SNS 發佈大型訊息。

訊息屬性資料類型和驗證

訊息屬性資料類型可識別 Amazon SNS 如何處理訊息屬性的值。例如,如果類型為數字,Amazon SNS 會驗證其是否為數字。

Amazon SNS 支援下列所有端點的邏輯資料類型,除非另有說明:

  • 字串 - 字串為 UTF-8 二進位編碼的 Unicode。如需代碼值的清單,請參閱 http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters。

    注意

    訊息屬性不支援代理值。例如,使用代理值來表示表情符號會出現以下錯誤:Invalid attribute value was passed in for message attribute。

  • String.Array - 格式化為字串的陣列,可包含多個值。值可以是字串、數字或關鍵字 true、false 和 null。數字或布林值類型的 String.Array 不需要引號。以逗號分隔的多個 String.Array 值。

    AWS Lambda 訂閱不支援此資料類型。如果您為 Lambda 端點指定此資料類型,則會以 String 資料類型中,Amazon SNS 提供給 Lambda 的 JSON 酬載傳遞。

  • 數字 - 數字為正負整數或浮點數字。數字需有足夠的範圍和精準度,方可涵蓋大多數整數、浮點數、雙精度浮點數一般支援的可能數值。一數字的值可從 -109 至 109,準確度到包含小數點後的 5 位數。前後的零會截去。

    AWS Lambda 訂閱不支援此資料類型。如果您為 Lambda 端點指定此資料類型,則會以 String 資料類型中,Amazon SNS 提供給 Lambda 的 JSON 酬載傳遞。

  • 二進位 - 二進位類型屬性可儲存任何二進位資料;例如壓縮資料、加密資料或影像。

為行動推播通知保留的訊息屬性

下表列出為行動推播通知服務 (您可用來結構化您的推播通知訊息) 保留的訊息屬性:

推送通知服務 預留的訊息屬性
ADM AWS.SNS.MOBILE.ADM.TTL
APNs 1 AWS.SNS.MOBILE.APNS_MDM.TTL
AWS.SNS.MOBILE.APNS_MDM_SANDBOX.TTL
AWS.SNS.MOBILE.APNS_PASSBOOK.TTL
AWS.SNS.MOBILE.APNS_PASSBOOK_SANDBOX.TTL
AWS.SNS.MOBILE.APNS_SANDBOX.TTL
AWS.SNS.MOBILE.APNS_VOIP.TTL
AWS.SNS.MOBILE.APNS_VOIP_SANDBOX.TTL
AWS.SNS.MOBILE.APNS.COLLAPSE_ID
AWS.SNS.MOBILE.APNS.PRIORITY
AWS.SNS.MOBILE.APNS.PUSH_TYPE
AWS.SNS.MOBILE.APNS.TOPIC
AWS.SNS.MOBILE.APNS.TTL

百度

AWS.SNS.MOBILE.BAIDU.DeployStatus
AWS.SNS.MOBILE.BAIDU.MessageKey
AWS.SNS.MOBILE.BAIDU.MessageType
AWS.SNS.MOBILE.BAIDU.TTL
FCM AWS.SNS.MOBILE.FCM.TTL
AWS.SNS.MOBILE.GCM.TTL
macOS AWS.SNS.MOBILE.MACOS_SANDBOX.TTL
AWS.SNS.MOBILE.MACOS.TTL

MPNS

AWS.SNS.MOBILE.MPNS.NotificationClass
AWS.SNS.MOBILE.MPNS.TTL

AWS.SNS.MOBILE.MPNS.Type

WNS AWS.SNS.MOBILE.WNS.CachePolicy
AWS.SNS.MOBILE.WNS.Group
AWS.SNS.MOBILE.WNS.Match
AWS.SNS.MOBILE.WNS.SuppressPopup
AWS.SNS.MOBILE.WNS.Tag
AWS.SNS.MOBILE.WNS.TTL
AWS.SNS.MOBILE.WNS.Type

1 如果訊息屬性不符合其需求,Apple 將拒絕 Amazon SNS 通知。如需其他詳細資訊,請參閱 Apple 開發人員網站上的傳送通知請求至 APN。