PHP
AWS
SMS
sdkforPHP

AWS SDK for PHPでSMSを利用してメッセージを送る

More than 1 year has passed since last update.

仕事でAWSを使ってSMS認証を送るという課題をいただいたので挑戦しました。
しかしいきなりSMS認証は難しいので、今回はAWSで自分の携帯電話番号に「こんにちは」とショートメッセージを送るところまでにしました。
以下はその手順です。

手順

①IAMでグループとユーザーを設定

アクセスキーとセキュリティキーが発行されるのでメモを取る。セキュリティーキーは表示を押すと見ることができます。

:loudspeaker: 注意 :loudspeaker:
アクセスキーとセキュリティーキーは、漏洩しない場所にメモしてください。
もし悪用されると大量にアクセスされ、AWSから高額請求が来ることもあるようです。
また発行されたページから他のページに移動してしまうとセキュリティーキーは2度と見られないので、必ずメモを取るかcsvをダウンロードしましょう。

②作成したグループ内のユーザーにAmazonSNSFullAccessポリシーをアタッチする。

※私ははじめここが理解できず、EC2をアタッチしていました。

③SDK for PHPをComposerでインストールして、venderディレクトリをドキュメントルートに入れる。下のコードもドキュメントルートに置く。

smstest.php
<?php
require './vendor/autoload.php';
error_reporting(E_ALL);
ini_set("display_errors", 1);

$params = array(
    'credentials' => array(
        'key'   =>  'XXXXXX',  //アクセスキー
        'secret'    =>  'XXXXXX', //セキュリティキー
    ),
    'region'        =>  'ap-northeast-1', //リージョンの設定
    'version'       =>  'latest'
);

$sns = new \Aws\Sns\SnsClient($params);

$args = array(
    "SMSType"       =>      "Transational",
    "Message"       =>      "こんにちは", //英語も送信できます。
    "PhoneNumber"   =>      "電話番号" //日本であれば+81-XX-XXXX-XXXX
);

$result = $sns->publish($args);
echo "<pre>";
var_dump($result);
echo "</pre>";
?>

④phpファイルを実行

  1. まずsmstest.phpを置いたドキュメントルートへ移動する
    \$ cd /your/document/root/

  2. ファイルを実行
    \$ php smstest.php

ブラウザからでもコンソールからでもできます。
ブラウザの場合はBASIC認証をかけるなりして第三者からのアクセスを防いでください。

実行結果

できたー!
smstest.jpg

これだけ見るとだいぶ怖いですが、目標は達成しました。

まとめ

今回は、SDK for PHPでSMSを利用してメッセージを送ることに挑戦しました。
AWSのドキュメントを丸パクリ参考にしつつ、無事メッセージを送ることに成功しました。
ここから発展させて、SMS認証も作っていきたいと思います。

最後までお読みいただきありがとうございました!:smiley:
感想や説明不足な点がありましたら、コメントいただけると嬉しいです。