Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8833

【AWS】Lambda+Amazon SNSでSMSを送信する

$
0
0

やりたいこと

AWS LambdakからAmazon SNSを利用して、任意の電話番号あてにSMSを送信します。

Amazon SNSって?

Amazon Simple Notification Service
任意の通知をいろんなプロトコルで送信できるよ。
事前にトピックっていう通知カテゴリみたいなの作って、そいつに紐づくサブスクリプションを作成しておくと、
トピックが叩かれたときに紐づいているサブスクリプションにメッセージが送信されるよ。
で認識合ってる?

プロトコル/トランスポート
HTTP/HTTPS
Email
Email-JSON
Amazon SQS
AWS Lambda
Platform application endpoint
SMS

公式の概要
Black Beltのスライド

コードとかより注意しておきたいこと

送信制限について

SNSでのSMS送信は送信制限が厳しめに設定されています。
利用料金の上限が1USD/月に設定されていて、東京リージョンにおいては12,3通/月しか送れません。
テスト送信だけで上限に達する可能性もあるので、必要があれば上限緩和申請を出しましょう。

宛先指定について

SNSでSMSを飛ばす分にはトピックを作成しなくても送信が可能です。

SMSじゃなくてE-Mailを送信したいという場合、
SNSでは事前にE-Mailの検証(実際にメールを送って、受信者が認証する)が必要です。
Lambdaでメールアドレスを指定してメール送信したいときにはAmazon SESを使いましょう。

構成

AWS LambdaとAmazon SNSのみです。
tempsnip.png

Lambda関数

事前にLabmda実行ロールにSNS実行ポリシーをアタッチしましょう。
とりあえずテストなのでAmazonSNSFullAccessをアタッチしておきます。

コード

ランタイムはNode.js 12.xです。

TestSendSMS.js
varAWS=require("aws-sdk");varSNS=newAWS.SNS();exports.handler=function(event,context,callback){// メッセージ情報を設定varparam={PhoneNumber:'E.164形式の電話番号',Message:'This is test message.',MessageAttributes:{'AWS.SNS.SMS.SMSType':{DataType:'String',StringValue:'Transactional'// 信頼性を重視する場合はこちらを//StringValue: 'Promotional'   // コストを重視する場合はこちらを},'AWS.SNS.SMS.SenderID':{DataType:'String',StringValue:'TEST'// 端末に表示される送信元名}}};// メッセージを送信するSNS.publish(param,function(err,data){if(err){context.done(null,err);}context.done(null,data);});};

多分これでいけます―


Viewing all articles
Browse latest Browse all 8833

Trending Articles