选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Amazon SNS 消息属性

聚焦模式
Amazon SNS 消息属性 - Amazon Simple Notification Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SNS 支持传输消息属性,这些属性支持您提供与消息相关的结构化元数据项目(如时间戳、地理空间数据、签名和标识符)。对于 SQS 订阅,在启用 Raw Message Delivery(原始消息传输)时,最多可以发送 10 个消息属性。要发送 10 个以上的消息属性,必须禁用 Raw Message Delivery(原始消息传输)。所具有的消息属性(定向到启用了原始消息传输的 Amazon SQS 订阅)超过 10 个的消息将作为客户端错误被丢弃。

消息属性是可选的,并独立于消息正文(但随之一起发送)。接收方可以使用此信息来决定如何处理消息,而不必先处理消息正文。

有关使用 AWS Management Console 或发送带有属性的消息的信息 适用于 Java 的 AWS SDK,请参阅要使用 AWS Management Console将消息发布到 Amazon SNS 主题教程。

注意

当消息结构为 String 而不是 JSON 时,仅发送消息属性。

您还可以使用消息属性,帮助构造移动终端节点的推送通知消息。在这种情况下,消息属性仅用于帮助构造推送通知消息。这些属性不会被传递到终端节点,就像在发送带有消息属性的消息到 Amazon SQS 终端节点时一样。

您还可以使用消息属性来让消息变为可通过订阅筛选策略进行筛选。可以将筛选策略应用于主题订阅。应用了筛选策略且筛选策略范围设置为 MessageAttributes(默认值)时,订阅将只接收具有策略接受的属性的那些消息。有关更多信息,请参阅 Amazon SNS 消息筛选

注意

使用消息属性进行筛选时,该值必须是有效的 JSON 字符串。这样做可以确保将消息传送到启用了消息属性筛选的订阅。

消息属性项目和验证

每个消息属性包含以下项目:

  • Name – 消息属性的名称可以包含以下字符:A-Z、a-z、0-9、下划线 (_)、连字符 (-) 和句点 (.)。名称不得以句点开头或结尾,并且不应包含连续句点。名称区分大小写,且必须在消息的所有属性名称中是唯一的。名称最多可以有 256 个字符。名称不能以 AWS.Amazon. (或任何大小写变化形式)开头,因为这些前缀已预留以供 Amazon Web Services 使用。

  • Type – 受支持的消息属性数据类型有 StringString.ArrayNumberBinary。数据类型在内容方面具有与消息正文相同的限制。想要了解更多信息,请参阅消息属性数据类型和验证部分。

  • Value – 用户指定的消息属性值。对于字符串数据类型,value 属性必须遵循与消息正文相同的内容限制。但是,如果使用消息属性进行筛选,则该值必须是有效的 JSON 字符串,以确保与 Amazon SNS 订阅筛选策略兼容。有关更多信息,请参阅 Amazon Simple Notification Service API 参考中的发布操作。

名称、类型和值都不得为空或 null。此外,消息正文也不应为空或 null。消息属性的所有部分 (包括名称、类型和值) 都包含在消息大小限制中,该限制当前是 256 KB。

消息属性数据类型和验证

消息属性数据类型指示 Amazon SNS 处理消息属性值的方式。例如,如果类型是数字,则 Amazon SNS 会验证它是否为数字。

除非另有说明,否则 Amazon SNS 支持所有终端节点的以下逻辑数据类型:

  • String – 字符串是使用 UTF-8 二进制编码的 Unicode。有关代码值的列表,请参阅 http://en.wikipedia。 org/wiki/ASCII#ASCII_printable_characters。

    注意

    消息属性中不支持代理值。例如,使用代理值来表示表情符号将收到以下错误:Invalid attribute value was passed in for message attribute

  • String.Array – 格式为字符串的阵列,可以包含多个值。这些值可以是字符串、数字或关键字 truefalsenull。数字或布尔类型的 String.Array 不需要引号。多个 String.Array 值用逗号分隔。

    AWS Lambda 订阅不支持此数据类型。如果您为 Lambda 终端节点指定此数据类型,它会作为 Amazon SNS 传输给 Lambda 的 JSON 负载中的 String 数据类型传递。

  • Number – 数字是正或负整数或是浮点数。数字具有足够的范围和精度,以便包含整数、浮点数和双精度数通常支持的大多数可能值。数字的值可以介于 -109 到 109 之间,精确至小数点后 5 位数。系统会删减开头和结尾的 0。

    AWS Lambda 订阅不支持此数据类型。如果您为 Lambda 终端节点指定此数据类型,它会作为 Amazon SNS 传输给 Lambda 的 JSON 负载中的 String 数据类型传递。

  • Binary – 二进制类型属性可以存储任何二进制数据,例如压缩数据、加密数据或图像。

为移动推送通知预留的消息属性

下表列出了可用于构造推送通知消息的移动推送通知服务的预留消息属性:

推送通知服务 预留的消息属性
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

Baidu

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 开发者网站上的 “向发送通知请求”。 APNs

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。