Amazon SNS 消息屬性 - Amazon Simple Notification Service

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

Amazon SNS 消息屬性

Amazon SNS 支援訊息屬性的交付,讓您提供有關訊息的結構化中繼資料項目 (例如時間戳記、地理空間資料、簽名和識別碼)。針對SQS訂閱,啟用「原始郵件傳遞」時,最多可傳送 10 個郵件屬性。如要傳送超過 10 個訊息屬性,則必須停用原始訊息交付。針對啟用原始訊息交付的 Amazon SQS 訂閱具有超過 10 個訊息屬性的訊息,將會被捨棄為客戶端錯誤。

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

如需使用 AWS Management Console 或傳送具有屬性之郵件的詳細資訊 AWS SDK for Java,請參閱若要使用將訊息發佈到 Amazon SNS 主題 AWS Management Console教學課程。

注意

只有當郵件結構為「字串」時,才會傳送訊息屬性,而不會傳送JSON。

您也可以使用訊息屬性來協助結構化行動裝置端點的推送通知訊息。在此情況下,訊息屬性只會用來協助結構化推送通知訊息。將具有訊息屬性的訊息傳送到 Amazon 端點時,屬性不會像傳送到SQS端點一樣。

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

注意

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

訊息屬性項目和驗證

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

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

  • 類型 - 支援的訊息屬性資料類型為 StringString.ArrayNumberBinary。資料類型內容上的限制與訊息內文相同。資料類型會區分大小寫,長度上限為 256 個位元組。如需詳細資訊,請參閱 訊息屬性資料類型和驗證 一節。

  • 數值 - 使用者指定的訊息屬性數值。若為字串資料類型,值的屬性在內容上的限制與訊息內文相同。如需詳細資訊,請參閱 Amazon 簡單通知服務API參考中的發佈動作。

名稱、類型和值不能為空或 null。此外,訊息本文不能為空或 null。訊息屬性的所有部分,包括名稱、類型和值,均包含在訊息大小限制中,目前限制為 256 KB。

訊息屬性資料類型和驗證

訊息屬性資料類型可識別 Amazon 處理訊息屬性值的方式SNS。例如,如果類型是一個數字,Amazon SNS 驗證它是一個數字。

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

  • 字符串-字符串是具有 UTF -8 二進制編碼的 Unicode。如需程式碼值的清單,請參閱 http://en.wikipedia.org/wiki/ ASCII # ASCII 列印字元。

    注意

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

  • String.Array - 格式化為字串的陣列,可包含多個值。值可以是字串、數字或關鍵字 truefalsenull。數字或布林值類型的 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
APNs1 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 通知。如需其他詳細資訊,請參閱「傳送通知要求至 APNs Apple 開發人員網站」。