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 にアクセスするとキューが送信される。
うまくいけば、マネジメントコンソール上で送信されたメッセージを確認することができる。