【PHP】AmazonSQSをAWS SDK for PHP 2で利用

bus0027-001

最近Amazonのマーケットプレイスに出品していて思ったのが、競合出品者の価格変更が早いってことです。

自分が価格改定すると、ほんの10分や15分後には競合相手の価格も変わります。

PA-APIの改定があってからAmazonMWSを使って価格改定をしていたので、どんな手段を使えばそれが可能なのかと思っていたら、2年以上前にサブスクリプションAPIというものができてたんですね。

WEBツールの「プライスター」や「マカド」などもおそらくこれを使っているんでしょう。

こういったサービスが提供されているのなら自分でも作れるんじゃないかと思い、PHPで自作した価格改定ツールをバージョンアップしました。

1から新しいものを作り直して1週間弱、出来栄えには満足しているのですが、1番ハマったのが、AmazonSQSの取得方法です。これさえなければ、3日でできたのに……。

というわけで、価格改定ツールの詳細は後日記事にするとして、今回はAmazonSQSの使い方のメモを残しておきます。

スポンサーリンク
レクタングル(中)広告

サブスクリプションAPI

サブスクリプションAPIの詳細は、MWS公式ブログが詳しいです。

簡単に言えば、今まで情報をこちらから取りにいっていたものを、Amazon側から知らせてくれるというものです。

現在提供されているのは、出品している商品の価格に変更があった時に知らせてくれる「AnyOfferChangedNotification」と、FBAマルチチャネルサービスのフルフィルメント出荷、納品、返品のステータスが変更されたときに知らせてくれる「FulfillmentOrderStatus Notification」の2つです。

価格改定には「AnyOfferChangedNotification」を購読して、AmazonSQSにメッセージを蓄えてもらいます。

このメッセージを定期的に取得して価格改定をすれば、効率的でしかもMWSのスロットル制限にも引っかからないというわけです。

AmazonSQSの利用方法

MWS公式ブログに設定の仕方も載ってます。

サブスクリプションAPI 設定方法について

Amazon AWSを使ったことがない人は新たに登録をしなければなりません。

毎月100万件までは無料で受信できますが、それを超えると有料なので、クレジットカードの登録が必要です。

個人で使う場合は、制限を超えることはないと思いますが、出品数が多い人は注意が必要です。

AmazonSQSのキューからメッセージを取り出す

問題はここからです。

キューの設定は公式ブログに書かれた方法で問題なくでき、「AnyOfferChangedNotification」を受信することもできますが、PHPでどうやって取り出せばいいのか?

英語のマニュアルを読むほどの気力もないので、日本語の情報を頼りに試行錯誤した結果、AWS SDK for PHP のバージョン2を使って何とかなりました。

AWS SDK for PHP

どうしてハマったのかというと、AWS SDK for PHPのバージョンによる互換性があまりないためです。

最新バージョンは3系なのですが、情報が乏しいです。

1や2は比較的情報があるのですが、かなり混在しています。

最初はバージョン3を使っていろいろと試したのですが、どうもうまくいかず、最終的には2を使うことでメッセージを受信できました

何でも最新にするのではなくて、情報が多いものを使えってことです。

バージョン2を使う場合、以下の方法が使えます。

  1. Composerを利用してインストールする(推奨)
  2. pharを使う
  3. zipファイルをダウンロードする

この3つの方法で利用できるようですが、2や3ではうまくいかない場合が出てきます。

1の方法を使うことが推奨されているのはそのためのようです。

AWS SDK for PHP 2.8.30 をダウンロード

pharやzipファイルを使う場合は、ダウンロードしてきます。

公式サイトではバージョン3になっているので、バージョン2のダウンロード先を探すだけでも大変です。

https://github.com/aws/aws-sdk-php/releases/tag/2.8.30

ダウンロード先もバージョンがバラバラなので、よく確認します。

Composerをインストール

インストールする場合、まずはComposerが使えないと話にならないので、これをインストールします。

こちらのサイトがわかりやすいです。

http://vdeep.net/php-composer

ComposerでAWS SDK for PHPをインストール

「composer.json」というファイルを作成し、以下のように記述します。

インストール

すると、「vendor」というフォルダができます。

これができたらインストールは成功です。

AWS SDK for PHPを使う

「vendor」フォルダ内の「autoload.php」を読み込んで使います。

パスは環境によって変えてください。

これでようやく下準備が完了です。

ほぼ公式マニュアル通りですが、英語です。

http://docs.aws.amazon.com/aws-sdk-php/v2/guide/installation.html

AmazonSQSのキューからメッセージを取り出す

「region」の値は、キューのURLのリージョンを入れます。

「version」も入れておかないと怒られたりしますので、「latest」を入れておけば動きます。

まとめ

SQSのメッセージさえ受け取れれば、あとは自由です。

「AnyOfferChangedNotification」は1分以内に送信されるようなので、実際にするかどうかはともかく、数分ごとに価格改定することも可能です。

価格を変えないにしても、常に新しい情報を得られるといろんな可能性が広がります。

スポンサーリンク
レクタングル(中)広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル(中)広告