HOME > 技術レポート > AWS > AWS SNSを利用したスマホへのSMS送信

2019年8月20日

AWS SNSを利用したスマホへのSMS送信

AWS SNSを利用したスマホへのSMS送信方法を記述する

目次

AWS SNSを利用したスマホへのSMS送信

  1. 概要
  2. 詳細
  3. 注意点
  4. 費用

1.概要

Amazon Web Services(アマゾン ウェブ サービス、AWS)を利用し、
携帯電話宛にSMSを送信するプログラムの実装方法を記述する。
1.jpg

2.詳細

1.SNS管理コンソール設定

Amazon Simple Notification Service管理コンソールを開き、
モバイルテキストメッセージング (SMS)の管理画面に遷移する。
「テキストメッセージングの優先設定」として各種設定可能であるが、ほぼ標準で問題ない。

SMS送信の送信タイプには「Promotional SMS」と「Transactional SMS」とがあるが、
リアルタイム性の高い通知を行う場合は「Transactional SMS」を利用する方が良い。
SMS送信者名はAWS SNSの標準設定でも可能だが、プログラム内で指定する事も可能である。
2.jpg

3.jpg

2.プログラム実装

SMS送信するためにLambdaを利用してプログラムの実装する。

import json
import logging
import boto3

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
 # TODO implement
 logging.info(json.dumps(event))

 accesskey = 'XXXXXXXXXXXXXXXXX'
 secretkey = 'XXXXXXXXXXXXXXXXX'
 region = 'ap-northeast-1'

 message_attributes = {

 'AWS.SNS.SMS.SenderID': {
  'DataType': 'String',
  'StringValue': 'XXXX' # 通知者表示に使用される送信者ID
  }
 }

 phone_number = '+819012345678' #電話番号 090-1234-5678
 message = 'サンプルメッセージ'

 try:
  sns = boto3.client('sns', aws_access_key_id=accesskey, aws_secret_access_key=secretkey, region_name=region)

  response = sns.publish(
   PhoneNumber = phone_number
   ,
   Message = message
   ,
   MessageAttributes = message_attributes
   )
  logging.info('OK')

 except Exception as err:
  print(err.code)

 return {
  'statusCode': 200,
  'body': json.dumps('Hello from Lambda!')
 }

3.動作確認

Lambdaを実行すると下記のようなSMSがスマホ宛に送信されてくる。
送信者IDは機種やキャリアによってはプログラム通りに表示されない場合がある。
送信者IDを固定するサービスを契約する事により確実な設定をする事も可能なよう。
4.jpg

3.注意点

AmazonSNSでは、不正使用や悪用を防止するため、SMS メッセージの使用制限として、
ひと月上限 1.00 USDが標準として上限設定されている。
動作検証を何度か行うと1.00USDを超えてしまうため、SMS送信ができなくなる。
よって、制限の引き上げを行うため、AWS サポートセンターからリクエストする必要がある。
ケースを作成する事により数時間程度で回答がもらえ、上限を引き上げる事が可能である。

4.費用

Japanリージョンの場合は、
通信キャリア(KDDI/NTT DoCoMo/Okinawa Cellular Telephone Company/Softbank Mobile Corp)により異なるが、
「$0.06~0.1/SMS」となっている。