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(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント