AWSのキューイングサービスであるSQSを利用する方法を解説します。
0. AWSアカウントを作成し、SQSでキューを作成
AWSアカウントの作成方法は省略します。
SQSのキュー作成で、1点だけ注意点です。キュータイプ
を 標準
で作成して下さい。
1. LaravelにAWS-SDKをインストール
AWS-SDKとは、AWSとのAPI通信を簡素かしたパッケージです。LaravelでAWSを利用する際には、aws-sdk-php-laravel
を利用する機会が多いかと思います。
すごい簡単にいうと、AWSとの面倒な認証やあれこれをやってくれる処理郡です。
1-1. composer.json へ aws-sdk-php-laravel を追記
composer.json
{
"require": {
//省略
"aws/aws-sdk-php-laravel": "~3.0"
//省略
}
}
1-2. aws-sdk-php-laravel をインストール
composer update を実行する。
composer update
実行が完了すると/vendor/aws
配下にAWS-SDKがインストールされています。
2. Laravel で SQS クライアントを作成し、メッセージを送信する。
Controllerで、SQSキューにメッセージを送信していきます。まずは、SQSのクライアントを作成します。
2-1. SqsClientを作成する
WebApiControllerのsendSqsメソッドの中で、処理を書いてきます。
<?php
namespace App\Http\Controllers;
use Aws\Sqs\SqsClient;
class WebApiController extends Controller
{
public function sendSqs()
{
$config = [
'credentials' => [
'key' => env('AWS_SECRET_ACCESS_KEY'),
'secret' => env('AWS_ACCESS_KEY_ID'),
],
'region' => 'ap-northeast-1', // ご利用のリージョン
'version' => 'latest',
];
//SQS Clientを作成
$sqs = SqsClient::factory($config);
}
}
SqsClient
はaws-sdk-php-laravel
をインストールした際に一緒に含まれています。
$sqs
でSQSのClientを作成出来ました。次に $sqs
を利用してメッセージを送信していきます。
2-2. SQSにメッセージを送信
上記で作成したクライアントを利用してメッセージを送信します。
<?php
namespace App\Http\Controllers;
use Aws\Sqs\SqsClient;
class WebApiController extends Controller
{
public function sendSqs()
{
$config = [
'credentials' => [
'key' => env('AWS_SECRET_ACCESS_KEY'),
'secret' => env('AWS_ACCESS_KEY_ID'),
],
'region' => 'ap-northeast-1', // ご利用のリージョン
'version' => 'latest',
];
//SQS Clientを作成
$sqs = SqsClient::factory($config);
// SQSのメッセージ
$value = "piyo";
// 送りたいSQSのURLを指定
$sqs_url = env('AWS_SQS_URL');
$params = [
'DelaySeconds' => 0,
'MessageBody' => $value,
'QueueUrl' => $sqs_url,
];
$result = $sqs->sendMessage($params);
}
}
上記で、SQSのキューにメッセージを送信出来ます。
Q. SQSのURLはどこにある?
$sqs_url = env('AWS_SQS_URL');
こちらに SQSのURLを設定する必要があります。
それは、キューの画面へいくと確認出来ます。
以上です。