SMSでワンタイムパスワードを送りたかったのでやってみました。
Amazon SNS(Simple Notification Service)を使うと、1通1円前後とお手軽価格で送信できます😆
料金を大幅に勘違いしてました。。申し訳ありません。
1通7〜10円前後です。
料金表
(Enter your country / region
欄にJapan
を入力すれば、国内の料金がわかります)
SMSを送ってみよう!
SMSの設定
SNSコンソール(https://console.aws.amazon.com/sns/v2/home )にアクセスします。
メニュー内の テキストメッセージング(SMS) から、テキストメッセージングの設定管理 へ。
デフォルトのメッセージタイプをトランザクションを選択し、
デフォルトの送信者IDに任意の英数字を入力しておきます。
(これがSMSの送信者欄に表示されると思ったんだけど・・・うまくいかなかった🤔)
他はとりあえずそのままでOKです。
IAMユーザーの設定
AmazonSNSFullAccess
をアタッチしたIAMユーザーを用意し、
アクセスキーIDとシークレットアクセスキーを控えておきます。
Gemを入れる
aws-sdkが入っていなければ、追加しましょう!
Gemfileに以下を追記し、 bundle install
します。
gem "aws-sdk-rails"
SMS送信
clientを作って・・・
client = Aws::SNS::Client.new(
access_key_id: "<アクセスキーID>",
secret_access_key: "<シークレットアクセスキー>",
region: "ap-northeast-1"
)
phone_numberには、日本なら+81から始まる国際電話番号を指定します。
0から始まる電話番号から変換する場合、PhonyRailsを使うと簡単です😀
https://github.com/joost/phony_rails
client.publish({
phone_number: "<+81901xxxxx33>",
message: "シークレットやで",
subject: "",
})
自分のスマホで無事受信!
いともあっさり簡単でした。
本番で運用するなら?
上限引上を申請しよう!
デフォルトでは、1ヶ月あたりの送信上限が1USDに設定されています。
AWSサポートへ、上限引上の申請を行いましょう。
翌営業日には、申請した100USDに引き上げてもらえました😀