AWS SNSからのリクエストを検証するaws-js-sns-message-validatorをPromise化する
SNSのメッセージの署名検証を行うモジュールがAWS側で用意されているようです。以下URLになります。
GitHub - aws/aws-js-sns-message-validator
Contribute to aws/aws-js-sns-message-validator development by creating an account on GitHub.
インストールします。
npm i sns-validator
Promise化する
このsns-validatorはコールバックスタイルなのでutil.promisifyでpromise化します。
sns-validatorのindex.jsファイルを見ればわかりますが、bindメソッドでthisを固定化する必要があります。
const MessageValidator = require('sns-validator')
const { promisify } = require('util')
const aws = require('aws-sdk')
const sns = new aws.SNS({
apiVersion: '2010-03-31',
region: 'ap-northeast-1'
})
exports.handler = async (event) => {
const message = JSON.parse(event.body) // 署名の検証
const validator = new MessageValidator()
const validateMassage = await promisify(validator.validate.bind(validator))(message) // bind(インスタンス変数)とする必要がある
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
}
return response
}
12行目で.bind(インスタンス変数)として、promisifyでプロミス化できます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント