0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

電話番号の登録なしで数分でOTPが送れる「AWS End User Messaging Notify」を試してみた

0
Posted at

はじめに

「サービスにSMS認証を入れたい」と思ったとき、これまでのAWSでは 電話番号の購入やキャリア登録、Sender IDの申請 が必要で、本番運用まで数週間〜数ヶ月かかることも珍しくありませんでした。特にグローバル展開を見据えると、国ごとに異なる規制や登録プロセスに頭を抱えた経験のある方も多いのではないでしょうか。

2026年3月、AWSから AWS End User Messaging Notify という新機能が発表されました。これは、AWSが所有する電話番号とSender IDを使って、数分でOTP(ワンタイムパスコード)送信を開始できる 機能のようです。

本記事では、このアップデート内容の整理と、実際にAWS CLIを使って触ってみたハンズオンをお届けします。

忙しい人のための要約

  • AWS End User Messaging Notify は、AWS管理の電話番号・Sender IDを使ってOTPを送信できる新機能
  • 電話番号の購入やキャリア登録が 一切不要、設定から送信まで 数分で完了
  • SMS・音声(Voice)の両チャネルに対応
  • SMS Protect(不正検知)が標準搭載
  • 追加料金なし
  • 事前承認済みの テンプレート を使うため、本文の自由度は低い代わりにコンプライアンスはAWSに任せられる

AWS End User Messaging Notifyとは

ざっくり説明

「AWSが用意した電話番号プールから、テンプレート経由でOTPを送れる」 機能です。

従来の AWS End User Messaging SMS は、ユーザー自身が電話番号を購入して、国ごとの登録をこなし、メッセージ本文も自由に設計する必要がありました。これはこれで柔軟ですが、「とりあえずOTPだけ送れれば良い」 というユースケースには過剰でした。

Notifyは、このOTPユースケースに特化して、面倒な部分をすべてAWSが代行してくれるサービスのようです。

アーキテクチャ全体像

標準SMS送信との比較

項目 標準SMS送信 Notify
電話番号の購入 必要 不要
キャリア登録 ユーザー責任 AWSが管理
最初の送信まで 数日〜数週間 数分
メッセージテンプレート ユーザー管理 AWS事前承認のみ
不正検知 オプション 必須で組み込み済み
対応ユースケース 汎用(マーケ含む) OTP / コード検証

何がうれしいのか

1. 導入の圧倒的な簡単さ

キャリア登録を待つ必要がないので、PoC から本番投入までのリードタイムが劇的に短くなります。

2. コンプライアンスはAWSにお任せ

OTPのメッセージ本文は世界中のキャリア/規制当局のレビューをくぐり抜ける必要があり、ここが結構な落とし穴です。Notifyは AWSが事前承認したテンプレート しか使えない代わりに、コンプライアンス対応がAWS側で完結します。

3. 不正対策が標準搭載

AWS End User Messaging SMS Protect が追加料金なしで組み込まれており、AIT(人工的に膨らまされたトラフィック) やSMSポンピング攻撃を自動で検知・ブロックしてくれます。

やってみた

それでは実際にAWS CLIで触ってみましょう。ちょっと触る程度ならば、AWSマネージメントコンソールからもテストできそうだったので、AWSマネージメントコンソールやってもいいと思います。

手順1: IAMポリシーを用意する

送信とテンプレート参照に必要な最小限のポリシーはこちらです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sms-voice:CreateNotifyConfiguration",
        "sms-voice:DescribeNotifyConfigurations",
        "sms-voice:DescribeNotifyTemplates",
        "sms-voice:ListNotifyCountries",
        "sms-voice:SendNotifyTextMessage",
        "sms-voice:SendNotifyVoiceMessage",
        "sms-voice:PutMessageFeedback"
      ],
      "Resource": "*"
    }
  ]
}

手順2: Notify Configurationを作成する

自分のブランド名(表示名)と使うチャネルを指定して、Notify Configurationを作成します。

# Notify Configurationを作成(SMSチャネルで、ユースケースはコード検証)
aws pinpoint-sms-voice-v2 create-notify-configuration \
    --display-name "MyAppCorp" \
    --use-case CODE_VERIFICATION \
    --enabled-channels SMS
# ステータス確認
aws pinpoint-sms-voice-v2 describe-notify-configurations \
    --notify-configuration-ids nc-abcdef1234567890 \
    --query 'NotifyConfigurations[0].Status'

AWSマネージメントコンソールから確認するとこんな感じです。

スクリーンショット 2026-04-20 23.36.51.png

手順3: 利用可能なテンプレートと対応国を確認する

Notifyのキモは「事前承認済みテンプレート」です。自分のTierとチャネルで使えるテンプレートを一覧します。

# Basic Tier / SMSチャネルで利用可能な英語テンプレートを確認
aws pinpoint-sms-voice-v2 describe-notify-templates \
    --filters '[
        {"Name":"channels","Values":["SMS"]},
        {"Name":"tier-access","Values":["BASIC"]}
    ]'

テンプレートには多言語版もあり、日本語向けのテンプレートも用意されています(例: notify-code-verification-japanese-xxx)。

自分のTierで送信可能な国を調べてみます。

# SMSチャネル・Basic Tierで送信可能な国を一覧
aws pinpoint-sms-voice-v2 list-notify-countries \
    --channels SMS \
    --tier BASIC

日本(JP)が含まれていればOKです。

AWSマネージメントコンソールから確認するとこんな感じです。

スクリーンショット 2026-04-20 23.38.49.png

手順4: テストOTPを送信する

いよいよ送信です。テンプレート変数に実際のコードを渡して、自分の電話番号に送ってみます。

# SMSでOTPを送信
aws pinpoint-sms-voice-v2 send-notify-text-message \
    --notify-configuration-id notify-7c5041be7b5d479c954fdcxxxxxxxxxx \
    --destination-phone-number "+819012345678" \
    --template-id notify-code-verification-japanese-001 \
    --template-variables '{"code":"123456"}' \
    --message-feedback-enabled

数秒で手元のスマホに以下のような形でSMSが届きます。

IMG_0393.PNG

認証フローのシーケンス

実際のアプリケーションに組み込んだ場合のシーケンスはこんな感じです。

料金について

基本

Notifyの料金は 「Notifyサービス料金(per-message)」+「SMS / 音声の通常配信料金」 の2層構造です。OTPだけ使いたい場合でも、通常のSMS送信より若干割高になる可能性があるため、AWS End User Messaging Pricing で最新の料金を確認しましょう。

ただし SMS Protectによる不正ブロックは無料 で、ブロックされたメッセージには配信料金が発生しません。SMSポンピング対策込みと考えると、十分にコスト効率の良い選択という考えもできる思います。

スペンドリミットの設定

デフォルトでも月次のスペンドリミットが設定されますが、想定外のコスト爆発を防ぐには 明示的な上限設定 をおすすめします。

# Notifyの月次スペンドリミットを100USDにセット
aws pinpoint-sms-voice-v2 set-notify-message-spend-limit-override \
    --monthly-limit 100

Basic TierとAdvanced Tier

最初は Basic Tier で、送信数に保守的な上限が設定されます。本番で大量送信が必要になったら、ブランド検証を経て Advanced Tier にアップグレードし、上限と優先的な電話番号プール(プレミアムアイデンティティ)を開放できます。

まとめ

AWS End User Messaging Notify は、「OTPを送るだけなのに準備が重すぎる」という開発者の痛みを正面から解決してくれるアップデートです。

  • 電話番号購入・登録が不要で、数分で送信開始
  • SMS Protect標準搭載 で不正対策の心配なし

一方で、テンプレートの自由度が低い など制約はあるので、ユースケースに合わせて「Notify」と「従来のSMS送信」を使い分けるのが良さそうです。

SaaSや自社サービスでSMS認証を入れたいけど踏み切れなかった…という方は、この機会にまずはPoCから試してみるといいうかもしれませんね。

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?