AWS SDK for RubyでSNSショートメッセージを送る

AWS SDK for Ruby Version 3 でのやり方
https://github.com/aws/aws-sdk-ruby

IAMの設定

sns:Publish のActionを許可しておく。Resourceは指定できないのでワイルドカード。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "*"
        }
    ]
}

コード

Gemfile で aws-sdk-sns を読み込んでおく。

gem "aws-sdk-sns"

クレデンシャルは環境変数に設定するなどしておいて、以下のコードでSMSを送信できる。

require 'aws-sdk-sns'
client = Aws::SNS::Client.new
result = client.publish(message: "test message", phone_number: "+819000000000")
result.message_id
#=> "af277fa2-5e77-517a-aebf-27f9c06114fd"

MessageAttributesを指定する場合は以下のようにする。

result = client.publish(
  message: "test message",
  phone_number: "+819000000000",
  message_attributes: {
    "AWS.SNS.SMS.SenderID" => {
      data_type: "String",
      string_value: "hoge"
    }
  }
)