PHPでAmazon SNSを使ってSMSを送ってみた

AWSのサービスの一つ、Amazon Simple Notification Service(SNS)を使ってSMSを送る手順をいくつか記事にしました。
今回はPHPから送る手順について記事にしたいと思います。

関連記事

何らかの通知をSMSで送りたいと思ったことはありませんか。 Amazon Simple Notification Service(SNS)は可用性が高く耐久性に優れたセキュアな完全マネージド型のpub/subメッセージングサービスです。 […]

関連記事

以前、Amazon SNSコンソール上からSMSを送信する手順を記事にしました。 [sitecard subtitle=関連記事 url=https://twinturbo-power.com/2021/02/amazon-snsでs[…]

はじめに

PHPからAWSの機能を使う場合も、他の言語の時と同様に専用のSDKをインストールします。
詳細についてはこちらの公式ページをご覧ください。

Install the AWS SDK for PHP version 3.…

いくつか方法はありますが、composerを使ってインストールするのが簡単だと思います。

サンプルプログラム

認証情報の設定にはいくつか方法があるようですが、今回はSnsClientインスタンスを生成するときに直接指定しました。
keyやsecretは.envファイルに設定しておき、ソースコードには直接記述しないようにします。

<?php
use Aws\Sns\SnsClient;
class SmsNotify
{
    private $snsClient;

    public function __construct()
    {
        $this->snsClient = new SnsClient(
            [
                'credentials' =>
                    [
                        'key' => env('SNS_CLIENT_KEY'),
                        'secret' => env('SNS_CLIENT_SECRET'),
                    ],
                'region' => env('SNS_CLIENT_REGION'),
                'version' => env('SNS_CLIENT_VERSION'),
            ]
        );
    }

    public function issueNotify(string $message)
    {
        $topic = env('SNS_TOPIC');

        $this->snsClient->publish(
            [
                'Message' => $message,
                'TopicArn' => $topic,
            ]
        );
    }
}

SmsNotifyクラスを生成して、issueNotifyメソッドを呼び出せばSMSを送信することができます。

トピックや送信先はSNSコンソールから設定しておいてください。
また、SMS送信に使うIAMユーザーのアクセスキーも作成しておいてください。

上記サンプルにはエラー処理を実装していませんが、publishメソッドを呼び出した結果が配列で返ってくるので必要な場合はそれを取得して処理を行ってください。


まとめ

前述の記事にある、Go言語のサンプルプログラムと比べるとやっていることは同じだということに気が付くと思います。
認証情報を設定して、メッセージとTopicARNを指定してpublishメソッドを呼び出すだけです。
一つの言語で処理の流れを掴んでしまえばあとは簡単だと思います。

この記事がPHPでSMSを送信したい方の参考になれば幸いです。