Amazon Product Advertising APIでHTTP Status 503: Service Unavailableになる

Amazon Product Advertising API(PA-API)でリクエストしたら、以下のエラーが表示されました。

Error! RequestThrottled
HTTP Status 503: Service Unavailable
AWS Access Key ID: xxxxx. You are submitting requests too quickly. Please retry your requests at a slower rate.

数秒、数分、数時間、1日、3日たってもエラーのまま。

アクセスキーIDとシークレットキーを再発行してみてもエラーのまま。

調べてみた結果、

2019/01/23にPA-APIの利用ポリシー変更が原因のようです。

[重要] Product Advertising API 利用ポリシーの変更について

この変更の大まかな内容ですが、

リクエストの上限がすべてのユーザーに対して

1秒に1リクエストできたのが、

10秒に1リクエストに減りました。

また、

30日間、PA-API経由で売り上げがない場合、リクエストエラーになってしまいます。

こうなった場合、Amazonアソシエイト・プログラムの他のサービスで売り上げが発生したら、再びPA-APIが使えるようになるようです。

劣化。。

アマゾン商品検索 Amazon Product Advertising API を使ってみる

Amazon Product Advertising APIを使ってアマゾンの商品検索をする方法

Amazon アソシエイト・プログラムのアカウントを作成する

Amazon Product Advertising APIを使うには、以下が必要です。

  • アクセスキー
  • シークレットキー
  • アソシエイトID

以下のページにアクセスして、アカウントを作成します。
Amazon アソシエイト・プログラム

Amazon Product Advertising API Scratchpadでリクエストを作成する

アクセスキー、シークレットキー、アソシエイトIDを取得したら、
下記のサイトにアクセスします。
Product Advertising API Scratchpad
Amazon Product Advertisingのリクエストは結構、複雑なのですが、このサイトを使うと簡単にリクエストが作成できます。

アクセスキー、シークレットキー、アソシエイトIDを入力する。

例として、Item Searchをしてみます。
左側の Select operation で Item Search を選択し、
下記の箇所に取得したアクセスキー、シークレットキー、アソシエイトIDを入力します。

Item Searchセクションの設定をする

続いて、Item Searchセクションに、例として以下のように設定し、Run requestボタンを押します。

Responseの確認をする

リクエストに成功すると、Responseセクションにこんな感じで表示されます。

XML responseタブに切り替えると、XML形式のレスポンスコードが確認できます。

HTML responseタブに切り替えると、HTML形式のレスポンスコードが確認できます。

Code snippetsを確認する

Laravelで使いたいので、Code snippetsのPHPタブを選択して、コピーします。
あとは、Laravelで、ContollerやBlade.phpで適当に加工して使います。