Node.js からAmazon SNS APIをコールしてみた
Node.jsのプログラムからメール通知をしたかったので、お手軽に実装できそうなAmazon SNSを使用してみた。
事前準備
- TOPIC作成とsubscribeはAWS Management Consoleから事前にやりました
- IAMを使用して下記のような権限を絞ったユーザを作っておくとベターです(必須ではありません)
{ "Statement": [ { "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": "arn:aws:sns:*:123456789012:nodetest" } ] }
ライブラリのインストール
$ npm install aws-lib
でインストールされるライブラリを使用(https://github.com/livelycode/aws-lib)。
こことここを見て当たりをつけて、実装してみる。
送信テストしてみる
$ cat sns.js const sys = require('sys'), aws = require('aws-lib'); sns = aws.createSNSClient('ACCESSKEY','SECRETKEY'); sns_args={ 'TopicArn':'arn:aws:sns:us-east-1:123456789012:nodetest', 'Subject':'test desu', 'Message':'this is test' }; sns.call('Publish',sns_args,function(result) { console.log(result); }); $ node sns.js { '@': { xmlns: 'http://sns.amazonaws.com/doc/2010-03-31/' }, PublishResult: { MessageId: 'e16cbfd1-b8b8-413b-8898-aed24459861c' }, ResponseMetadata: { RequestId: '495f13fa-e402-11e0-b040-0310cd74adef' } }
すぐにこんな感じのメールが来ます。
From: TEST TOPIC <no-reply@sns.amazonaws.com> Subject: test desu this is test -- If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe: https://sns.us-east-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:us-east-1:123456789012:nodetest:.... Please do not reply directly to this e-mail. If you have any questions or comments regarding this email, please contact us at sns-question@amazon.com
まとめ
かなり楽勝にメールが飛ばせていい感じですね。今度はsubscribeするためのinterfaceをexpress+ejsで作ってみたいと思います。