Amazon SNS で Message だけを配信する方法を教えてください
この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2022 | Advent Calendar 2022 - Qiita 5日目の記事です。
困っていた内容
Amazon SNS から自社ウェブアプリ(HTTPS)にメッセージを配信しています。
アプリ側のリクエストログを見ると次のような JSON 形式を受信しており、送られたメッセージがMessage
の値に設定されているようでした。
値だけを配信して欲しいのですが、設定方法を教えてください。
{ "Type" : "Notification", "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324", "TopicArn" : "arn:aws:sns:ap-northeast-1:123456789012:hato-sns-topic", "Subject" : "hato-test-title", "Message" : "hato-test-Message", "Timestamp" : "2012-05-02T00:54:06.655Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEw6JRN...", "SigningCertURL" : "https://sns.ap-northeast-1.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.ap-northeast-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:ap-northeast-1:123456789012:hato-sns-topic:d6a4f408-4021-4e66-82e3-920cb71bb5fe" }
どう対応すればいいの?
サブスクリプションの設定で「raw メッセージ配信」を有効にしてください。
Amazon SNS raw メッセージの配信 - Amazon Simple Notification Service
Amazon Kinesis Data Firehose、Amazon SQS、およびHTTP/Sエンドポイントによるメッセージの JSON フォーマット処理を避けるため、Amazon SNS は raw メッセージの配信を許可します。
raw メッセージ配信が無効な状態では、メタデータを含む JSON 形式でメッセージが送信されます。raw メッセージ配信を有効にすると、HTTP POST リクエストの本文には Amazon SNS に送信したメッセージだけが含まれるようになります。デフォルトは無効です。
やってみた
Amazon SNS コンソール の「トピック」からサブスクリプションが含まれるトピックを選択します。
サブスクリプションを選択して「編集」をクリックします。
「raw メッセージ配信の有効化」を選択して「変更の保存」をクリックします。
変更が正常に完了されたことを確認します。
動作確認
「メッセージの発行」を選択します。
テストメッセージを入力して「メッセージの発行」を選択します。
Message
だけが配信されました。
hato-test-Message