【新機能】 AWS End User Messaging Notify で電話番号の登録なしに OTP を送信できるようになりました
ウィスキー、シガー、パイプをこよなく愛する大栗です。
AWS End User Messaging に、OTP(ワンタイムパスワード)を SMS や音声通話で送信するための新機能 Notify がリリースされました。電話番号の調達やキャリアへの登録が不要で、数分でセットアップが完了します。
- AWS End User Messaging Notify
- AWS End User Messaging Notify User Guide
- AWS End User Messaging Pricing
AWS End User Messaging Notify とは
AWS End User Messaging Notify は、ワンタイムパスワード(OTP)などの認証コードを SMS や音声通話で送信するためのマネージドサービスです。
従来、AWS で SMS を送信するには電話番号の調達やキャリアへの登録が必要で、利用開始まで数日から数週間かかることがありました。Notify では AWS が管理する電話番号と送信者 ID を使用するため、これらの手続きが不要になり、数分で OTP の送信を開始できます。
従来の Standard SMS との比較
| 項目 | Standard SMS | Notify |
|---|---|---|
| 電話番号のプロビジョニング | 必要 | 必要でない |
| 番号登録 | 利用者が実施 | AWS マネージド |
| 最初のメッセージ送信までの時間 | 数日〜数週間 | 数分 |
| メッセージテンプレート | 利用者が管理 | 事前承認、AWS マネージド |
| 不正防止 | オプション | 必須 |
| ID 管理 | 利用者が管理 | AWS マネージド |
| ルーティングロジック | 利用者が管理 | AWS マネージド |
対応チャネル
Notify は以下の2つのチャネルに対応しています。
- SMS: テキストメッセージでの OTP 送信
- Voice(音声通話): 音声でのOTP読み上げ
サービスティア
Notify には Basic と Advanced の2つのティアがあります。
| 項目 | Basic | Advanced |
|---|---|---|
| アクセス | 設定の作成後すぐに | ティアアップグレード検証後 |
| 1日のメッセージ送信制限 | 200 メッセージ | 無制限 |
| 1秒あたりのトランザクション数(TPS) | 1 | 25 |
| 対応国 | 事前に承認された低リスク国 30 カ国 | 全てのサポートされた国 |
| アイデンティティの種類 | ロングコード、フリーダイヤル、送信者ID | ショートコード、ロングコード、フリーダイヤル、送信者ID |
| SMS プロテクト | 必須項目(無効不可) | 必須 |
| 国別構成 | 固定(事前承認リストのみ) | 設定可能な許可/ブロックルール |
| デフォルトの支出限度額 | 通知支出制限を参照 | 通知支出制限を参照 |
| 顧客所有のIDサポート | はい(任意の関連プール) | はい(任意の関連プール) |
Advanced へアップグレードするには、以下のものを提供する必要があります。
- オプトイン方式:エンドユーザーから同意を取る方法を選択
- 口頭による同意:電話による同意
- デジタル方式:Webサインアップフォームやモバイルアプリのアカウント作成、チェックアウトのチェックボックス、または利用規約への同意など
- オプトインの証明:同意取得プロセスの証拠を提示
- 口頭による同意の場合:同意が取得される箇所を示す通話スクリプトまたは IVR フロー
- デジタルオプトインの場合:ユーザーが同意を与えたフォームまたはページのスクリーンショットまたは URL
- ビジネスドキュメント
- 事業内容とユースケースについての説明
Basic ティアはすぐに利用開始できるため、まずは検証用途で始めて、本番運用時に Advanced へアップグレードするという流れが良いかと思います。
Notify の仕組み
AWS マネージド ID による送信
従来の Standard SMS では、利用者が電話番号を調達し、キャリアへの登録手続きを行う必要がありました。Notify では、AWS が管理する共有電話番号プールから、送信先の国とチャネルに応じて最適な電話番号や Sender ID が自動的に選択されます。利用者が電話番号のライフサイクルを管理する必要はありません。
事前承認済みテンプレート
メッセージの本文は、AWS が事前に各国のキャリアに対して承認を取得したテンプレートを使用します。現在は CODE_VERIFICATION(認証コード送信)タイプのテンプレートが提供されており、多言語に対応しています。テンプレートには {{code}} のような変数プレースホルダーが含まれており、送信時に実際の値に置き換えられます。
なお、テンプレートの本文を利用者が作成・変更することはできません。カスタムメッセージを送信したい場合は、Standard SMS を使用する必要があります。
SMS Protect による不正防止
全ての API コールに対して、SMS Protect による不正防止が標準で組み込まれています。追加費用なしで以下の保護が提供されます。
- 人工的にトラフィックを膨らませる攻撃(AIT)のフィルタリング
- SMS Pumping 攻撃のブロック
- 国レベルの制限の適用
この保護は必須であり、利用者が無効にすることはできません。セキュリティが標準で担保されている点は安心です。
料金
Notify の料金は Notify 料金とチャネル料金の2つの要素で構成されます。
- Notify 料金: 送信メッセージ1通あたり $0.045 から
- 管理番号、テンプレート管理、ルート最適化、SMS プロテクトを含む
- チャネル料金: チャネルと送信先国によって異なる
- 標準のAWS End User Messagingチャネル料金と同様
Notify 料金 - ボリュームティア
| ティア | 月間取引量 | メッセージごとの通知料金 |
|---|---|---|
| Tier 1 | 最初の 25,000 件 | $ 0.045 |
| Tier 2 | 25,001~100,000 件 | $ 0.040 |
| Tier 3 | 100,001~250,000 件 | $ 0.035 |
| Tier 4 | 250,001 件以上 | $ 0.030 |
チャネル料金
SMS
日本での AWS End User Messaging の通常の SMS 料金は以下になります。
- Transactional SMS : $ 0.07451
※:OTP認証コードは Promotional SMS ではなく、Transactional SMS とみなされます。
音声
日本での AWS End User Messaging の通常の音声料金は以下になります。
| 国または地域 | 発信料金(1分あたり、米ドル) |
|---|---|
| 日本 | $ 0.047 |
| 日本 - モバイル | $ 0.103 |
| 日本 - T東京 | $ 0.079 |
| 日本 - VoIP | $ 0.069 |
対応リージョン
Notify は AWS End User Messaging SMS が利用可能な全リージョンで提供されています。東京リージョン(ap-northeast-1)と大阪リージョン(ap-northeast-3)でも利用可能です。
やってみる
実際に AWS CLI を使って Notify の設定からメッセージ送信までを試してみます。
AWS Console で AWS End User Messaging の Notify 設定 を開き、設定を作成をクリックします。

任意の表示名を入力します。『1~256 文字である必要があります。英字、数字、スペース、ハイフン、アンダースコアのみを使用できます。』と書かれていますが、16文字以上入力するとエラーになっているようです。修正されることを期待します。
アドバンストを開き、湯高になっているチャネルでVOICEを追加して、言語コードでJapanese (ja)を選択し、テンプレートスタイルで任意のテンプレート(ここでは notify-code-verification-japanese-001 を選択)を選択して設定を作成をクリックします。

設定が作成されます。作成した設定をクリックします。

テストタブを選択します。

送信先の電話番号に E.164 形式の電話番号(日本であれば +81 で始まる番号)を入力して、チャネルを選択肢、テンプレートの言語設定でJapanese (ja)を選択してテンプレート(ここでは notify-code-verification-japanese-001)を選択し、code に送信するコードを入力して、テストメッセージを送信をクリックします。
{{brandName}}: 1回限りの認証コードは {{code}} です。このメッセージは共有しないでください。Notify から送信されました。

この様にテンプレートの内容が反映されて通知されました。

この様に電話番号を登録せずに SMS で送信できました。
同様に音声でも通知してみます。

アメリカから電話がかかってきます。

テンプレートの通りに以下のメッセージが読み上げられます。しかし「verification-1」が「ベリフィケイション マイナスイチ」と読まれたり、『654321』を連続して読むため聞き取りにくいといった状況であるため、音声の使用は考慮が必要そうです。
verification-1: 1回限りの認証コードは 654321 です。このメッセージは共有しないでください。Notify から送信されました。
さいごに
AWS End User Messaging Notify により、OTP 送信のハードルが大幅に下がりました。従来は電話番号の調達やキャリアへの登録で数日から数週間かかっていたセットアップが、数分で完了するようになっています。特に SMS 保護による不正防止が標準で組み込まれている点は重要なポイントです。SMS Pumping 攻撃などの対策を別途検討する必要がなく、セキュリティがデフォルトで担保されます。
なお、Amazon Pinpoint のサービス終了が発表されており、SMS 送信機能は AWS End User Messaging に移行されています。今回の Notify はその後継サービスの中でも、OTP 送信に特化した使いやすい機能として位置づけられています。認証には MFA デバイスやパスキーの利用が推奨されますが、一般コンシューマーへの強制も難しいので SMS による OTP がどうしても必要となります、まずは Basic ティアで検証を行い、本番利用時に Advanced ティアへアップグレードする流れで使用していくと良いと思います。






