LoginSignup
12
12

More than 5 years have passed since last update.

Amazon SNSを使い、RailsからSMSを送信する

Last updated at Posted at 2018-11-22

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) から、テキストメッセージングの設定管理 へ。
image.png
デフォルトのメッセージタイプをトランザクションを選択し、
デフォルトの送信者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に引き上げてもらえました😀

12
12
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
12
12