本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 使用。 -
類型 - 支援的訊息屬性資料類型為
String
、String.Array
、Number
和Binary
。資料類型內容上的限制與訊息內文相同。如需詳細資訊,請參閱 訊息屬性資料類型和驗證 一節。 -
數值 - 使用者指定的訊息屬性數值。若為字串資料類型,值的屬性在內容上的限制與訊息內文相同。如需詳細資訊,請參閱 Amazon Simple Notification Service API參考 中的發佈動作。
名稱、類型和值不能為空或 null。此外,訊息本文不能為空或 null。訊息屬性的所有部分,包括名稱、類型和值,均包含在訊息大小限制中,目前限制為 256 KB。
訊息屬性資料類型和驗證
訊息屬性資料類型會識別 Amazon 如何處理訊息屬性值SNS。例如,如果 類型是數字,Amazon 會SNS驗證其是否為數字。
Amazon SNS支援所有端點的下列邏輯資料類型,除非另有說明:
-
字串 – 字串是 Unicode,具有 UTF-8 二進位編碼。如需程式碼值的清單,請參閱 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 端點指定此資料類型,則會在 Amazon SNS交付給 Lambda 的JSON承載中以
String
資料類型形式傳遞。 -
數字 - 數字為正負整數或浮點數字。數字需有足夠的範圍和精準度,方可涵蓋大多數整數、浮點數、雙精度浮點數一般支援的可能數值。一數字的值可從 -109 至 109,準確度到包含小數點後的 5 位數。前後的零會截去。
AWS Lambda 訂閱不支援此資料類型。如果您為 Lambda 端點指定此資料類型,則會在 Amazon SNS交付給 Lambda 的JSON承載中以
String
資料類型形式傳遞。 -
二進位 - 二進位類型屬性可儲存任何二進位資料;例如壓縮資料、加密資料或影像。
為行動推播通知保留的訊息屬性
下表列出為行動推播通知服務 (您可用來結構化您的推播通知訊息) 保留的訊息屬性:
推送通知服務 | 預留的訊息屬性 |
---|---|
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 |
|
|
|
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 開發人員網站上的將通知請求傳送至 APNs