SymfonyでAmazon SQSを使う(新規プロジェクト作成からメッセージ送信まで)
Symfony 3.3系プロジェクトを作成
$ composer create-project symfony/framework-standard-edition my_project "3.3.*"
AWS SDKインストール
$ cd my_project/ $ composer req aws/aws-sdk-php aws/aws-sdk-php-symfony
app/AppKernel.php
に追記
<?php // ... class AppKernel extends Kernel { public function registerBundles() { return [ // ... new \Aws\Symfony\AwsBundle(), // ここ new AppBundle\AppBundle(), ]; } // ... }
設定
app/config/config.yml
に追記
key
secret
はそれぞれの環境のものを。
# ... # 以下を追記 aws: version: 'latest' region: 'ap-northeast-1' credentials: key: 'key-foo' secret: 'secret-foo'
AWSコンソール上で「新しいキューの作成」をする
新しいキューの作成は、SDKを通してプログラムからも可能だが、ここではマネジメントコンソール上で行う。
「Simple Queue Service」を選択してSQS Management Consoleを開き、「新しいキューの作成」からキューを作成する。
メッセージを送信する
src/AppBundle/Controller/DefaultController.php
を以下のように修正する。
<?php // ... public function indexAction(Request $request) { $sqs = $this->container->get('aws.sqs'); $sqs->sendMessage([ 'QueueUrl' => 'http://xxxxx/queue-url', 'MessageBody' => 'Test Message '.date('H:i:s'), ]); // replace this example code with whatever you need return $this->render('default/index.html.twig', [ // ... ]); }
QueueUrl
には作成したキューのURLを記述する。
php bin/console server:run
でサーバーを起動して http://127.0.0.1:8000
にアクセスするとキューが送信される。
うまくいけば、マネジメントコンソール上で送信されたメッセージを確認することができる。