Amazon Simple Notification Service
开发人员指南 (API Version 2010-03-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

附录:消息与 JSON 格式

Amazon SNS 使用下列格式。

HTTP/HTTPS 标题

当 Amazon SNS 向 HTTP/HTTPS 终端节点发送订阅确认消息、通知、或者取消订阅确认消息时,它将发出一个带有多个 Amazon SNS 特定标头值的 POST 消息。您可使用这些标头值处理以下事情,例如识别消息的类型而无需解析 JSON 消息主题来读取 Type 值。

x-amz-sns-message-type

消息类型。可能的值为SubscriptionConfirmationNotificationUnsubscribeConfirmation

x-amz-sns-message-id

通用唯一标识符,它对于每个发布的通知是唯一的。对于 Amazon SNS 在重试期间重新发送的通知,使用原始消息的消息 ID。

x-amz-sns-topic-arn

表示已经向主题发表消息的 Amazon Resource Name (ARN)。

x-amz-sns-subscription-arn

用于订阅终端节点的 ARN。

下列 HTTP POST 标题是一条发送至 HTTP 终端节点的通知消息的标题示例。

Copy
POST / HTTP/1.1 x-amz-sns-message-type: Notification x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55 Content-Length: 1336 Content-Type: text/plain; charset=UTF-8 Host: myhost.example.com Connection: Keep-Alive User-Agent: Amazon Simple Notification Service Agent

HTTP/HTTPS 订阅确认 JSON 格式

订阅一个 HTTP/HTTPS 终端节点后,Amazon SNS 将发送一条订阅确认消息至HTTP/HTTPS终端节点。此条消息包含您必须访问的SubscribeURL值,以确认订阅。(或者,您可以使用有“ConfirmSubscription”的Token值)。请注意直到订阅被确认后,Amazon SNS 才会向终端节点发送通知。

订阅确认消息是一条 POST 消息,消息的主体包含了一个 JSON 格式文档及以下名称/值对。

消息

一个描述消息的字符串。为订阅确认,字符串看上去像这样:

Copy
You have chosen to subscribe to the topic arn:aws:sns:us-east-1:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.
MessageId

通用唯一标识符,它对于每个发布的通知是唯一的。对于 Amazon SNS 在重试期间重新发送的消息,原始消息的消息 ID 被使用。

签名

Message、MessageId、Type、Timestamp 和 Topic Arn 值的 Base64 编码“SHA1withRSA”签名。

签名版本

所用 Amazon SNS 签名的版本。

签署 CertURL

用于签署消息的证书的 URL。

订阅 URL

为了确认订阅而必须访问的 URL。或者,您可以使用Token ConfirmSubscription 操作确认订阅。

时间戳

订阅确认发出的时间 (GMT)。

令牌

您可以使用 ConfirmSubscription 操作确认订阅的一个值。或者,您只需访问SubscribeURL

TopicArn

终端节点已经订阅该主题的 Amazon Resource Name。

Type

消息类型。为订阅确认,消息类型为:SubscriptionConfirmation

下列 HTTP POST 消息是向 HTTP 终端节点发送 SubscriptionConfirmation 消息的一个样例。

Copy
POST / HTTP/1.1 x-amz-sns-message-type: SubscriptionConfirmation x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic Content-Length: 1336 Content-Type: text/plain; charset=UTF-8 Host: myhost.example.com Connection: Keep-Alive User-Agent: Amazon Simple Notification Service Agent { "Type" : "SubscriptionConfirmation", "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b", "Token" : "2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736", "Timestamp" : "2012-04-26T20:45:04.751Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

您可以下载下面的 JSON 文件,以查看用于确认订阅的 JSON 格式定义:https://sns.us-west-2.amazonaws.com/doc/2010-03-31/SubscriptionConfirmation.json

HTTP/HTTPS 通知 JSON 格式

当 Amazon SNS 向已经订阅的 HTTP 或 HTTPS 终端节点发送一条通知时,发至终端节点的 POST 消息有一个包含一个带有下列名称/值对的 JSON 格式文档的消息体。

消息

当通知已经发布至主题,消息值已经指定。

MessageId

通用唯一标识符,它对于每个发布的通知是唯一的。对于 Amazon SNS 在重试期间重新发送的通知,使用原始消息的消息 ID。

签名

Message、MessageId、Subject(如有)、Type、Timestamp 和 Topic Arn 值的 Base64 编码“SHA1withRSA”签名。

签名版本

所用 Amazon SNS 签名的版本。

签署 CertURL

用于签署消息的证书的 URL。

主题

当发布通知至主题时指定的 Subject 参数。请注意这是一个可选的参数。如果 Subject 未被指定,那么 JSON 格式文档中不会出现名称/值对。

时间戳

通知发布的时间 (GMT)。

TopicArn

表示已经向主题发表消息的 Amazon Resource Name (ARN)。

Type

消息类型。用于通知,这种类型属于Notification

UnsubscribeURL

可以用作从主题取消订阅终端节点的 URL。如果您访问此 URL,那么 Amazon SNS 将取消订阅终端节点并不发送通知至此终端节点。

下列 HTTP POST 消息是发送至 HTTP终端节点的一条通知消息的样例。

Copy
POST / HTTP/1.1 x-amz-sns-message-type: Notification x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324 x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96 Content-Length: 773 Content-Type: text/plain; charset=UTF-8 Host: myhost.example.com Connection: Keep-Alive User-Agent: Amazon Simple Notification Service Agent { "Type" : "Notification", "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "My First Message", "Message" : "Hello world!", "Timestamp" : "2012-05-02T00:54:06.655Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEw6JRNwm1LFQL4ICB0bnXrdB8ClRMTQFGBqwLpGbM78tJ4etTwC5zU7O3tS6tGpey3ejedNdOJ+1fkIp9F2/LmNVKb5aFlYq+9rk9ZiPph5YlLmWsDcyC5T+Sy9/umic5S0UQc2PEtgdpVBahwNOdMW4JPwk0kAJJztnc=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96" }

您可以下载下面的 JSON 文件,以查看用于通知的 JSON 格式定义:https://sns.us-west-2.amazonaws.com/doc/2010-03-31/Notification.json

HTTP/HTTPS 取消订阅确认 JSON 格式

HTTP/HTTPS 终端节点从一个主题取消订阅之后,Amazon SNS将向终端节点发送一条取消订阅的消息。

取消订阅确认消息是一条消息体含有一个 JSON 格式文档及下列名称/值对的 POST 消息。

消息

一个描述消息的字符串。为了取消订阅确认,字符串应看起来像这样:

Copy
You have chosen to deactivate subscription arn:aws:sns:us-east-1:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.
MessageId

通用唯一标识符,它对于每个发布的通知是唯一的。对于 Amazon SNS 在重试期间重新发送的消息,原始消息的消息 ID 被使用。

签名

Message、MessageId、Type、Timestamp 和 Topic Arn 值的 Base64 编码“SHA1withRSA”签名。

签名版本

所用 Amazon SNS 签名的版本。

签署 CertURL

用于签署消息的证书的 URL。

订阅 URL

为了重新确认订阅,您必须访问的 URL。或者,您可以使用Token和“ConfirmSubscription”操作一起重新确认订阅。

时间戳

取消订阅确认发送的时间(GMT)。

令牌

您能使用“ConfirmSubscription”操作重新确认订阅的值。或者,您只需访问SubscribeURL

TopicArn

此终端节点已经从主题取消订阅的 Amazon Resource Name (ARN)。

Type

消息类型。为取消订阅确认,消息类型为UnsubscribeConfirmation

下列 HTTP POST 消息是向 HTTP 终端节点发送取消订阅确认消息的一个样例。

Copy
POST / HTTP/1.1 x-amz-sns-message-type: UnsubscribeConfirmation x-amz-sns-message-id: 47138184-6831-46b8-8f7c-afc488602d7d x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55 Content-Length: 1399 Content-Type: text/plain; charset=UTF-8 Host: myhost.example.com Connection: Keep-Alive User-Agent: Amazon Simple Notification Service Agent { "Type" : "UnsubscribeConfirmation", "MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d", "Token" : "2336412f37fb687f5d51e6e241d09c805a5a57b30d712f7948a98bac386edfe3e10314e873973b3e0a3c09119b722dedf2b5e31c59b13edbb26417c19f109351e6f2169efa9085ffe97e10535f4179ac1a03590b0f541f209c190f9ae23219ed6c470453e06c19b5ba9fcbb27daeb7c7", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Message" : "You have chosen to deactivate subscription arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.", "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f7948a98bac386edfe3e10314e873973b3e0a3c09119b722dedf2b5e31c59b13edbb26417c19f109351e6f2169efa9085ffe97e10535f4179ac1a03590b0f541f209c190f9ae23219ed6c470453e06c19b5ba9fcbb27daeb7c7", "Timestamp" : "2012-04-26T20:06:41.581Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEHXgJmXqnqsHTlqOCk7TIZsnk8zpJJoQbr8leD+8kAHcke3ClC4VPOvdpZo9s/vR9GOznKab6sjGxE8uwqDI9HwpDm8lGxSlFGuwCruWeecnt7MdJCNh0XK4XQCbtGoXB762ePJfaSWi9tYwzW65zAFU04WkNBkNsIf60=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

您可以下载下面的 JSON 文件,以查看用于取消订阅确认的 JSON 格式定义:https://sns.us-west-2.amazonaws.com/doc/2010-03-31/UnsubscribeConfirmation.json

SetSubscriptionAttributes Delivery Policy JSON Format

如果您向 SetSubscriptionAttributes 发送一个请求并为 AttributeName 参数设定一个DeliveryPolicy值,那么 AttributeValue 参数值必须是一个有效的 JSON 格式数据元。例如,以下例子将传输策略设置为 5 次重试。

Copy
http://sns.us-east-1.amazonaws.com/ ?Action=SetSubscriptionAttributes &SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca &AttributeName=DeliveryPolicy &AttributeValue={"healthyRetryPolicy":{"numRetries":5}} ...

为 AttributeValue 参数值使用下列 JSON 格式。

Copy
{ "healthyRetryPolicy" : { "minDelayTarget" : <int>, "maxDelayTarget" : <int>, "numRetries" : <int>, "numMaxDelayRetries" : <int>, "backoffFunction" : "<linear|arithmetic|geometric|exponential>" }, "throttlePolicy" : { "maxReceivesPerSecond" : <int> } }

有关更多 SetSubscriptionAttribute 操作的信息,请访问Amazon Simple Notification Service API Reference中的“SetSubscriptionAttributes”。

SetTopicAttributes Delivery Policy JSON Format

如果您向 SetTopicAttributes 发送一个请求并为 AttributeName 设定一个DeliveryPolicy值,那么 AttributeValue 参数值必须是一个有效的 JSON 格式数据元。例如,以下例子将传输策略设置为 5 次重试。

Copy
http://sns.us-east-1.amazonaws.com/ ?Action=SetTopicAttributes &TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic &AttributeName=DeliveryPolicy &AttributeValue={"http":{"defaultHealthyRetryPolicy":{"numRetries":5}}} ...

为 AttributeValue 参数值使用下列 JSON 格式。

Copy
{ "http" : { "defaultHealthyRetryPolicy" : { "minDelayTarget": <int>, "maxDelayTarget": <int>, "numRetries": <int>, "numMaxDelayRetries": <int>, "backoffFunction": "<linear|arithmetic|geometric|exponential>" }, "disableSubscriptionOverrides" : <boolean>, "defaultThrottlePolicy" : { "maxReceivesPerSecond" : <int> } } }

有关更多 SetTopicAttribute 操作的信息,请访问Amazon Simple Notification Service API Reference中的“SetTopicAttributes”。