2013年11月20日水曜日

【AWS】SimpleQueueServiceクイックスタート for PHP(pear編)

■環境
CentOS 5.9 64bit
PHP 5.3.3
pear 1.9.4

■クイックスタート
1. pearでawsのphp用のファイルをダウンロードしてくる
pear install Services_Amazon_SQS-0.3.0
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
downloading Services_Amazon_SQS-0.3.0.tgz ...
Starting to download Services_Amazon_SQS-0.3.0.tgz (34,121 bytes)
.........done: 34,121 bytes
downloading HTTP_Request2-2.1.1.tgz ...
Starting to download HTTP_Request2-2.1.1.tgz (99,151 bytes)
...done: 99,151 bytes
install ok: channel://pear.php.net/HTTP_Request2-2.1.1
install ok: channel://pear.php.net/Services_Amazon_SQS-0.3.0
※このときpearのバージョンが1.9.2以上ないとERRORとなりインストールできませんのでpearのバージョンが古い方はpearのバージョンをアップグレードしてください

2. アクセスキーとシークレットキーの取得
https://portal.aws.amazon.com/gp/aws/securityCredentials
アクセスしawsのアカウントでログインします

vim /usr/cfg/Services_Amazon_SQS/sqs.ini
に取得したアクセスキーとシークレットキーを記載します
※「sqs」とコマンドを打つとエラー文中に設定ファイルを記述する箇所が表示されますので上記の設定ファイルがない場合は自分の環境の設定ファイルの場所を確認してください
※アクセスキーとシークレットキーを設定後に「sqs」と打つと指定できるコマンドの一覧が表示されます

3. コマンドから実行する
pear経由で実行するとbash上でコマンドとして実行しSQSにアクセスすることができるようになります
デフォルトのリージョンは「us-east-1」に作成されるようです
・キューを作成する
  sqs create kaka_queue001
・キューの一覧を取得する
  sqs list
・メッセージを送信する
  echo "test" | sqs send http://queue.amazonaws.com/000000000000/kaka_queue001
・メッセージを受信する
  sqs receive http://queue.amazonaws.com/000000000000/kaka_queue001
※MaxNumberOfMessagesは指定できないので1つずつ受信する
・キューを削除する
  sqs delete http://queue.amazonaws.com/000000000000/kaka_queue001
※000000000000の部分はアカウントごとに設定されているIDを入力します
※Queue URLは「sqs list」でも取得で取得できた値をそのまま入力すればOKです

4. ソースコードから実行する
vim sqs_test.php
<?php
  require '/usr/share/pear/Services/Amazon/SQS/Queue.php';

  $accesskey='your accesskeyId';
  $secretkey='your secretkeyId';
  $accountId='your accountId ex) 000000000000';
  $queueName='kaka_queue001';
  $queueURL='http://queue.amazonaws.com/' . $accountId . '/' . $queueName;

  // send message
  $sqs=new Services_Amazon_SQS_Queue($queueURL, $accesskey, $secretkey);
  try {
    $sqs->send('test message');
  } catch (Services_Amazon_SQS_Exception $e) {
    trigger_error($e->getMessage());
  }
?>

php sqs_test.php
とするとkaka_queue001に「test message」というメッセージが送信されます

どうやら最近はpearでやるよりかはcomposerでやるほうがモダンらしいので
次回はcomposerでもやってみたいと思います

■参考

0 件のコメント:

コメントを投稿