AWS SNSでSMS(ショートメッセージ)に通知する
AWS SNS(Simple Notification Service)では、多彩な通知先を選択できます。公式ドキュメントによると、SNSイベントの通知先は以下のように多数用意されています。
本記事では、SMS(ショートメッセージサービス)に通知する方法を確認します。SNSトピックを作成し、携帯電話の電話番号を登録してSMS通知を設定します。また、Lambda関数を使用してSNSトピックにメッセージを送信します。これにより、AWS SNSを活用してSMSで通知を受け取る仕組みを構築します。
構成
- SNSトピックを作成し、通知先にSMSを指定します。
- Lambda関数を作成し、SNSトピックにメッセージを送信します。
リソース
SNSトピック
携帯電話の電話番号とSMSプロトコルを指定して、SNSトピックをサブスクライブします。
AWSアカウントがSMSサンドボックス内の場合の事前準備
動作確認の前に注意が必要です。デフォルトでは、AWSアカウントはSMSサンドボックス内にあります。AWS公式ドキュメントによると、SMSサンドボックスは以下のように説明されています。
Amazon SNS を使用して SMS メッセージを送信し始めると、AWS アカウントの所在地は SMS サンドボックス内になります。SMS サンドボックスは、SMS 送信者としての評判を損なうことなく、Amazon SNS 機能を試すための安全な環境を提供します。
SMS サンドボックス
また、SMSサンドボックス内にある場合、以下が重要です。
SMS メッセージは、認証済みの送信先電話番号にのみ送信できます。
SMS サンドボックス
そのため、動作確認の前に通知先の電話番号を登録する必要があります。
「Add phone number」を押下します。
登録する電話番号を入力後、「Add phone number」を押下します。
指定した携帯電話のSMSアプリに認証用のワンタイムパスワードが送られてきました。
これを登録ページに入力します。
ワンタイムパスワードを入力後、「Verify phone number」を押下します。
電話番号が登録されました。これでこの番号にメッセージを通知することができます。
Lambda関数
この関数は、SNSにメッセージを送信する役割を持ちます。以下の設定でメッセージを通知します。
- 件名:hogehoge
- 本文:fugafuga
関数で実行する具体的なコードについては、以下のページをご参照ください。
CloudFormationテンプレート
SNSトピック
Resources:
Topic:
Type: AWS::SNS::Topic
Properties:
FifoTopic: false
Subscription:
- Endpoint: !Ref PhoneNumber
Protocol: sms
TopicName: !Sub "${Prefix}-sns-topic"
Code language: YAML (yaml)
テンプレート全体
動作確認
Lambda関数を実行します。
関数が正常に実行され、SNSトピックにメッセージが送信されました。
携帯電話のSMSアプリを確認します。
確かにメッセージ「fugafuga」が送られてきました。ただし、件名として指定した文字列「hogehoge」は無視されるようです。
まとめ
AWS SNSの通知先にSMSを指定する方法を確認しました。SNSトピックを作成し、Lambda関数からメッセージを送信することで、SMSでの通知を実現しました。これにより、重要な情報を迅速に受け取る仕組みを構築できます。