AWS Node.js SDKを見てみましょう。すべての AWS サービス エンドポイントにアクセスできます。
var sns = new AWS.SNS();
// subscribe
sns.subscribe({topic: "topic", Protocol: "https"}, function (err, data) {
if (err) {
console.log(err); // an error occurred
} else {
console.log(data); // successful response - the body should be in the data
}
});
// publish example
sns.publish({topic: "topic", message: "my message"}, function (err, data) {
if (err) {
console.log(err); // an error occurred
} else {
console.log(data); // successful response - the body should be in the data
}
});
編集: 問題は、標準の本文パーサーが、SNS がコンテンツ タイプとして送信するプレーン/テキストを処理しないことです。生のボディを抽出するコードを次に示します。body パーサーの前に配置します。
app.use(function(req, res, next) {
var d= '';
req.setEncoding('utf8');
req.on('d', function(chunk) {
d+= chunk;
});
req.on('end', function() {
req.rawBody = d;
next();
});
});
その後、次を使用できます。
JSON.stringify(req.rawBody));
ルート内で JavaScript オブジェクトを作成し、SNS 投稿を適切に操作します。
テキスト/プレーンを処理するように本文パーサーを変更することもできますが、ミドルウェアを変更することはお勧めできません。上記のコードを使用するだけです。