メッセージ形式を解析する - Amazon Simple Notification Service

メッセージ形式を解析する

Amazon SNS では以下の形式が使用されます。

HTTP/HTTPS ヘッダー

Amazon SNS がサブスクリプションの確認、通知、またはサブスクリプション解除の確認メッセージを HTTP/HTTPS エンドポイントに送信するときは、Amazon SNS 固有の多くのヘッダー値とともに POST メッセージを送信します。これらのヘッダー値を使用すると、JSON メッセージ本文を解析して Type 値を読み取ることなく、メッセージタイプの識別などの操作を行うことができます。

x-amz-sns-message-type

メッセージのタイプ。指定できる値は、SubscriptionConfirmationNotification および UnsubscribeConfirmation です。

x-amz-sns-message-id

発行される各メッセージで一意の汎用一意識別子。再試行間に Amazon SNS が再送信する通知の場合、元のメッセージのメッセージ ID が使用されます。

x-amz-sns-topic-arn

このメッセージの発行先トピックの Amazon リソースネーム (ARN)。

x-amz-sns-subscription-arn

このエンドポイントへのサブスクリプションの ARN。

以下の HTTP POST ヘッダーは、HTTP エンドポイントへの通知メッセージのヘッダーの例です。

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 値が含まれています (または、Token 値を ConfirmSubscription で使用できます)。

注記

サブスクリプションが確認されるまで、Amazon SNS はこのエンドポイントに通知を送信しません。

サブスクリプションの確認メッセージは、以下の名前と値のペアを持つ JSON ドキュメントを含むメッセージ本文がある POST メッセージです。

Message

メッセージについて説明する文字列。サブスクリプションの確認の場合、この文字列は以下のようになります。

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

発行される各メッセージで一意の汎用一意識別子 再試行間に Amazon SNS が再送信するメッセージの場合、元のメッセージのメッセージ ID が使用されます。

Signature

Message、MessageId、Type、Timestamp、および TopicArn 値の Base64 エンコードされた "SHA1withRSA" 署名

SignatureVersion

使用される Amazon SNS 署名のバージョン

SigningCertURL

メッセージの署名に使用された証明書の URL

SubscribeURL

サブスクリプションを確認するためにアクセスする必要がある URL または、代わりに TokenConfirmSubscription アクションに使用してサブスクリプションを確認することもできます。

Timestamp

サブスクリプションの確認が送信された日時 (GMT)

Token

サブスクリプションを確認するために ConfirmSubscription アクションで使用する値 または、SubscribeURL にアクセスしても構いません。

TopicArn

このエンドポイントがサブスクライブしているトピックの Amazon リソースネーム (ARN)。

Type

メッセージのタイプ。サブスクリプションの確認の場合、タイプは SubscriptionConfirmation です。

次の HTTP POST メッセージは、HTTP エンドポイントへの SubscriptionConfirmation メッセージの例です。

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" : "2336412f37...", "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=2336412f37...", "Timestamp" : "2012-04-26T20:45:04.751Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

HTTP/HTTPS 通知の JSON 形式

Amazon SNS がサブスクライブしている HTTP または HTTPS エンドポイントに通知を送信すると、エンドポイントに送信される POST メッセージには、以下の名前と値のペアを持つ JSON ドキュメントを含むメッセージ本文があります。

Message

通知がトピックに発行されたときに指定された Message の値。

MessageId

発行される各メッセージで一意の汎用一意識別子。再試行間に Amazon SNS が再送信する通知の場合、元のメッセージのメッセージ ID が使用されます。

Signature

Message、MessageId、Subject (存在する場合)、Type、Timestamp、TopicArn 値の Base64 エンコードされた SHA1withRSA 署名。

SignatureVersion

使用される Amazon SNS 署名のバージョン

SigningCertURL

メッセージの署名に使用された証明書の URL

Subject

通知がトピックに公開されたときに指定された Subject パラメータ。

注記

このパラメータはオプションです。Subject が指定されていない場合、この名前と値のペアは、この JSON ドキュメントに表示されません。

Timestamp

通知が公開されたときの日時 (GMT)。

TopicArn

このメッセージの発行先トピックの Amazon リソースネーム (ARN)。

Type

メッセージのタイプ。通知の場合、タイプは Notification です。

UnsubscribeURL

このトピックからエンドポイントのサブスクリプションを解除するために使用できる URL。この URL にアクセスすると、Amazon SNS はエンドポイントのサブスクリプションを解除し、このエンドポイントへの通知の送信を停止します。

次の HTTP POST メッセージは、HTTP エンドポイントへの通知メッセージの例です。

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" : "EXAMPLEw6JRN...", "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" }

HTTP/HTTPS サブスクリプションの解除の JSON 形式

HTTP/HTTPS エンドポイントのサブスクリプションがトピックから解除されると、Amazon SNS はエンドポイントにサブスクリプションの確認メッセージを送信します。

サブスクリプション解除の確認メッセージは、次の名前と値のペアを持つ JSON ドキュメントを含むメッセージ本文がある POST メッセージです。

Message

メッセージについて説明する文字列。サブスクリプション解除の確認の場合、この文字列は次のようになります。

You have chosen to deactivate subscription arn:aws:sns:us-east-2: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 が使用されます。

Signature

Message、MessageId、Type、Timestamp、および TopicArn 値の Base64 エンコードされた "SHA1withRSA" 署名

SignatureVersion

使用される Amazon SNS 署名のバージョン

SigningCertURL

メッセージの署名に使用された証明書の URL

SubscribeURL

サブスクリプションを再確認するためにアクセスする必要がある URL。または、代わりに TokenConfirmSubscription アクションに使用してサブスクリプションを再確認することもできます。

Timestamp

サブスクリプション解除の確認が送信された日時 (GMT)。

Token

サブスクリプションを再確認するために ConfirmSubscription アクションで使用できる値。または、SubscribeURL にアクセスしても構いません。

TopicArn

このエンドポイントがサブスクリプションを解除されたトピックの Amazon リソースネーム (ARN)。

Type

メッセージのタイプ。サブスクリプション解除の確認の場合、タイプは UnsubscribeConfirmation です。

次の HTTP POST メッセージは、HTTP エンドポイントへの UnsubscribeConfirmation メッセージの例です。

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" : "2336412f37...", "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=2336412f37fb6...", "Timestamp" : "2012-04-26T20:06:41.581Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEHXgJm...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }

SetSubscriptionAttributes 配信ポリシーの JSON 形式

SetSubscriptionAttributes アクションにリクエストを送信し、AttributeName パラメータを DeliveryPolicy の値に設定する場合、AttributeValue パラメータの値は有効な JSON のオブジェクトである必要があります。例えば、次の例では、配信ポリシーを合計 5 回の再試行に設定します。

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

AttributeValue パラメータの値には、次の JSON 形式を使用します。

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

SetSubscriptionAttribute アクションの詳細については、「Amazon Simple Notification Service API リファレンス」のSetSubscriptionAttributesにアクセスしてください。

SetTopicAttributes 配信ポリシーの JSON 形式

SetTopicAttributes アクションにリクエストを送信し、AttributeName パラメータの値を DeliveryPolicy に設定する場合、AttributeValue パラメータの値は有効な JSON のオブジェクトである必要があります。例えば、次の例では、配信ポリシーを合計 5 回の再試行に設定します。

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

AttributeValue パラメータの値には、次の JSON 形式を使用します。

{ "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 リファレンス」のSetTopicAttributesにアクセスしてください。