仕事でAWSを使ってSMS認証を送るという課題をいただいたので挑戦しました。
しかしいきなりSMS認証は難しいので、今回はAWSで自分の携帯電話番号に「こんにちは」とショートメッセージを送るところまでにしました。
以下はその手順です。
#手順
###①IAMでグループとユーザーを設定
アクセスキーとセキュリティキーが発行されるのでメモを取る。セキュリティーキーは表示を押すと見ることができます。
注意
アクセスキーとセキュリティーキーは、漏洩しない場所にメモしてください。
もし悪用されると大量にアクセスされ、AWSから高額請求が来ることもあるようです。
また発行されたページから他のページに移動してしまうとセキュリティーキーは2度と見られないので、必ずメモを取るかcsvをダウンロードしましょう。
###②作成したグループ内のユーザーにAmazonSNSFullAccessポリシーをアタッチする。
※私ははじめここが理解できず、EC2をアタッチしていました。
###③SDK for PHPをComposerでインストールして、venderディレクトリをドキュメントルートに入れる。下のコードもドキュメントルートに置く。
<?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ファイルを実行
-
まずsmstest.phpを置いたドキュメントルートへ移動する
$ cd /your/document/root/ -
ファイルを実行
$ php smstest.php
ブラウザからでもコンソールからでもできます。
ブラウザの場合はBASIC認証をかけるなりして第三者からのアクセスを防いでください。
#実行結果
これだけ見るとだいぶ怖いですが、目標は達成しました。
#まとめ
今回は、SDK for PHPでSMSを利用してメッセージを送ることに挑戦しました。
AWSのドキュメントを丸パクリ参考にしつつ、無事メッセージを送ることに成功しました。
ここから発展させて、SMS認証も作っていきたいと思います。
最後までお読みいただきありがとうございました!
感想や説明不足な点がありましたら、コメントいただけると嬉しいです。