こんにちは。アプリケーションサービス部の柳田です。
SMS(ショートメッセージサービス)使っていますか?
Amazon SNS で SMS を使う場合、いくつか制限があります。それぞれの対策や検証した結果について本ブログにまとめます。
目次
留意点1:サンドボックスについて
初期状態は機能が制限されたサンドボックスでの動作確認が可能な状態です。
- 追加済の電話番号宛にのみ SMS が送信可能です(10個まで追加可能)
- 追加後の削除も可能なようです
任意の電話番号宛にも SMS を送信する場合は、サンドボックス外への移動を申請します
留意点2:利用制限と上限緩和申請について
SMSには不正利用対策のため、デフォルトで1.00USD/月という利用額上限が設定されています。
このデフォルト値で検証していた際に、5通ほどSMS送信した段階で本制限にかかり、SMS送信ができなくなりました
対策
上限緩和申請の実施
予想される毎月のメッセージ数をもとに上限緩和申請を実施します。申請手順は以下の通りですが、AWSサポートへの上限緩和申請後に Amazon SNS の SMS 設定を変更する必要がある点に注意です。
- AWSサポートに月あたりのSMS利用額上限緩和を申請します
- AWSへの上限緩和申請後に、SMS側のアカウント使用限度額を更新します
監視/運用の実施
毎月のメッセージ数が決まっている場合は問題ないですが、運用を始めると利用メッセージ数が増加して上限に達するかもと気になると思います。
その場合は、「SMSMonthToDateSpentUSD(当月の SMS の送信料金)」等をモニタリングして、上限値に対して80%超えたら追加申請する等、監視/運用いただくのが良いと考えます。
留意点3:送信メッセージサイズについて
Amazon SNS としては最大1600バイトまで1つの SMS メッセージ発行のアクションとして送信することができますが、実際にキャリアに送信されるメッセージは 140 バイトで分割して送信されます。
ただし、分割されたメッセージが分割されて表示されるか、または 1 つのメッセージとして表示されるかにつきましては、キャリア及び端末により異なる動作となりますため、各キャリアや端末で動作確認を行ってください。
動作確認は必要ですが、国内大手通信キャリアであれば670文字(全角)/1530(半角英数)までは1つのメッセージとして表示される想定です。(参考資料に各キャリアのURLを載せました)
以下文字数パターンでSMS(送信先は国内通信キャリアと契約している携帯電話)を送信したところ、メッセージ分割が以下結果になりました。
- 100文字程度(140バイト以下)→ 分割されない(1回のメッセージで送信される)
- 600文字程度(140バイト以上)→ 分割されない
- 1000文字程度 → 分割される(順序性のない複数メッセージで送信される)
対策
- 送信先キャリアによって変わるため、利用が想定されるキャリアで動作確認を実施いただくのが良いです
- 分割が発生しないよう、送信メッセージの文字数をできるだけ少なくするのも1つの手と考えます
留意点4:送信者IDについて
送信者IDを設定しない場合(デフォルト)では、受信側で送信元が「NOTICE」と表示されます
SMS送信時に送信者IDを英数字で設定が可能ですが、送信者IDは日本ではサポートされていないため、送信者 ID で設定した内容が必ず受信側に表示されるとは限らない点、ご留意ください。
対策
- 本文中にサポート窓口名などを入力することで、開封すれば送信元が分かる状態になります
留意点5:送信時エラーについて
LambdaやAWSマネジメントコンソールでSMS送信の検証を実施した際に、送信実行は成功しているが、SMSが届かないということがありました。
具体的には2の利用上限に達した場合が該当します。
対策
送信実行は成功してもSMSが届かない場合はCloudwatuch Logsに配信成功or失敗のログを出力することによって監視することが可能です
参考資料
- AWSドキュメント
- 各大手通信キャリアの文字数制限
- NTTドコモ(全角670文字)
- au(全角670文字)
- ソフトバンク(全角670文字)