Udemyセール開催中(11/12まで)教材が1,800円~

【AWS】SNSでスマホにSMSを送る際SenderIDが機能しないことがある

【AWS】SNSでスマホにSMSを-送る際SenderIDが機能しない-ことがあるサムネイル

AWSのSNSを使用してスマートフォンにSMSメッセージを送信しようとしたところ、SenderID(送信者ID)が電話番号になる場合がありました。

なお、SenderID(送信者ID)とは以下のようにSMSが誰から送信されたものかを示しているものです。

SenderID(送信者ID)とはSMS受信時に表示される送信者

今回、SenderID(送信者ID)にTest1とかTest2を指定しているにもかかわらず、まれに謎の電話番号(+81 50 5526 1813)から届いています。

事象の再現のしかたと対策を書いていきます。

目次

前提 SNSサンドボックス解除済みであること

SNSのSMS機能サンドボックス解除ボタン

SNS(Simple Notification Service)のSMS送信に関するサンドボックスは解除していました。最初はサンドボックスになっています。

サンドボックス時のSNSのSMS電話番号追加画面

解除しない場合、SMS送信先であるスマホの電話番号をサンドボックスの送信先電話番号に登録しておきましょう。

事象 SMSを送る際SenderIDが機能しないことがある

SenderIDを指定しているにもかかわらず、たまに謎の電話番号(+81 50 5526 1813)から送信されました。

SenderID(送信者ID)を指定してもまれに+81 50 5526 1813からSMSが届く

以下のpythonコードで10回連続で送信するプログラムを組んで実行してみたところ、10回中7回程度がTest1で届き、3回程度が電話番号(+81 50 5526 1813)から届きました。

事象の再現に使用したプログラムは以下の通りです。

import boto3


for i in range(1, 11):
    client = boto3.client('sns')
    response = client.publish(
        PhoneNumber='+818092088519',
        Message='test message' + str(i),
        MessageAttributes={
            'AWS.SNS.SMS.SenderID': {
                'DataType': 'String',
                'StringValue': 'Test1',
            },
        },
    )
    print(response)

SMSメッセージの送信にはboto3のSNS.Client.publishを使用しています。

なお、SenderIDは以下の公式ドキュメントに記載があるものを指定しました。

対策

まず、SMSメッセージ送信についてはAWSの管理範囲外のため、完全な対策は不可能であるようです。そのため、AWS内での根本的な対策は難しいようです。

対策1(回避策) 連続送信を避ける

根本的な回避策ではありませんが、送信の間隔をあけた場合、SenderID(送信者ID)が表示されることが多いように感じました。

SMSを利用してワンタイムパスワードなどを送信するAPI等を作成する場合、連打されないような制御を入れておくと良いかと思います。

対策2(代替策) ショートコードを利用する

SenderID(送信者ID)を利用することはできませんが、SMSショートコードの利用を検討する価値があるかもしれません。

SMSのショートコードとは、通常5桁から6桁の短い番号のことを指し、テキストメッセージを通じて企業やサービスと簡単にコミュニケーションを取るために使用されます。メッセージの受信も可能です。

ショートコードはSenderID(送信者ID)とは違い、厳密に審査されてから払い出されるため、信頼性が高いです。AWS SNSでショートコードを利用するにはサポートケースから申請することができます。

ただし、ショートコード発行を行う場合は追加料金がかかります。日本だとセットアップ料金 (1 回限りの料金)1,750 USD、月額料金1,150 USDがかかります。安くない料金です。

セットアップ料金 (1 回限りの料金) 月額料金 推定プロビジョニング時間 **
米国 650 USD 995 USD 12 週間
カナダ 3,000 USD 995 USD 16 週間
英国 0 USD 1,500 USD 16 週間
日本 1,750 USD 1,150 USD 12 週間
インド * 150 USD 300 USD 3 週間
中国 15 USD 15 USD 3 週間
ブラジル 330ドル 330ドル 4 週間
ショートコード各国の料金とリードタイム

上記の表は公式ドキュメント「世界中の SMS 料金」に記載されています。

また、ショートコードの払い出しには8〜12 週間のリードタイムがかかるとのことです。

すべての通信事業者ネットワークで、ショートコードを有効にするには、8〜12 週間かかります。別の国やリージョンの料金とプロビジョニング時間を確認するには、「Amazon SNS による SMS メッセージングの専用ショートコードをリクエストする」で説明されている手順を実行します。

https://docs.aws.amazon.com/ja_jp/sns/latest/dg/channels-sms-originating-identities-short-codes.html

まとめ

  • 問題点: AWS SNSを使用してSMSを送信する際、指定したSenderIDが正しく表示されず、代わりに電話番号が表示されることがある。
  • 再現方法: 10回連続でSMSを送信すると、7回は正しいSenderIDが表示され、3回は電話番号が表示される。
  • 対策:
    • 対策1(回避策): 連続送信を避けることでSenderIDが正しく表示される可能性が高まる。特にワンタイムパスワード送信APIなどでは、連打防止の制御を取り入れることが有効。
    • 対策2(代替策): ショートコードを利用する。ショートコードは信頼性が高く、SenderIDの問題を回避できる。ただし、セットアップ料金や月額料金が発生し、発行には8〜12週間のリードタイムが必要。

完全な解決は難しいものの、連続送信を避けることである程度の回避が可能です。また、コストやリードタイムを考慮した上で、ショートコードの利用も検討すると良いでしょう。

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次