AmazonのAPIを利用して商品検索していたスクリプトが急に使えなくなって困った。
現象
Error! RequestThrottledHTTP Status 503: Service UnavailableAWS Access Key ID: XXXXXXXXXXXXXXXX. You are submitting requests too quickly. Please retry your requests at a slower rate.
エラー!RequestThrottledHTTPステータス503:サービスを利用できないAWSアクセスキーID:XXXXXXXXXXXXXXX。リクエストの提出が早すぎます。遅いレートでリクエストを再試行してください。
売上がないわけでもなく、利用回数の制限に引っかかっているとも思えない。
対応
PA API 5のスクラッチパッドは別に用意されている様子。
以下のリンクから試してみると一応リクエストできる。
キーやシークレットキーは悪くないようです。
アソシエイトセントラルのトップページにもでかでかと記載されています。
2020年3月 31日をもって、PA API 4は完全にサービスを停止します。
バージョンアップ後もしばらく普通につかえていたので気にしていなかったのですが、
PA APIのバージョンアップに対応できていないのでは?と原因を推測して、
まずはその確認と対応をすることにしました。
Pythonのスクリプトでラッパーとしてbottlenoseを使っているが、
確認したところ最終更新日が古すぎる。PA APIのv5に対応できていなさそう。
なので、「python-amazon-paapi 3.1.0」を使えるか確認してみた。
検索が商品だけなら問題なさそう。しかしBrowseNodeも検索したいので、
そっちには使えなさそう(例がなかった)。
仕方無しにラッパーなしに修正してみるが、これは骨が折れそうだ。
SDKをダウンロード
・インストール
sudo python setup.py install
インストールはうまくいったぽい。
・「paapi5_python_sdk」フォルダをスクリプトと同じところにコピー。(もしくはパスを通しておけばいけるのではと思う)
サンプルスクリプトの各変数を自分用に修正して組み込んでいく。
日本で使える設定値
ホストと地域はこちらを参照。
ブラウズノード情報を取得するAPIサンプルを自スクリプトに移植したところ、
サンプルだとうまくいくが、自分の取得したいブラウズノードをしていするとうまく行かない。
以下のエラーメッセージが出力。
Error calling PA-API 5.0!
Status code: 500
Errors : {“__type”:”com.amazon.coral.service#InternalFailure”,”message”:”The request processing has failed due to some unknown error, exception or failure. Please retry again.”}
一見サーバー側のエラーぽいが、リトライしても同じエラーになる。
どうも、引数が一つでも配列の形として格納してあげないとだめなようで、
NGパターン:SearchBrowseNodes=”2275277051″
OKパターン:SearchBrowseNodes=[“2275277051”]
OKパターンにするとうまく行った。
コメント