CocoonのAmazon広告で「リクエストが多すぎる(TooManyRequests)」エラーに対策

 こちらのブログではWordPressのテーマとして無料でとても高機能な「Cocoon」を使わせていただいています。このCocoonでは下記のような広告をショートコードで簡単に表示することができます。

スポンサーリンク

Product Advertising APIroduct Advertising APIの制約

 この広告を表示するために、CocoonではAmazonが提供するAPI(Product Advertising API)を使って情報を取得しています。AmazonではこのAPIに関して、2019年1月23日にポリシー変更をしていて、もしこの上限を超えると「TooManyRequests」でエラーリターンする仕組みになっています。

2019/01/23 – Product Advertising API 利用ポリシーの変更について

変更内容について

Product Advertising API (以下PA-API)ではこれまで全てのお客様に初期状態にて1秒間に1リクエストのサービス提供をしてまいりました。
2019年01月23日よりこの条件を変更し、過去30日以内の発送済み売上商品が発生している場合、1日のリクエスト上限を8,640リクエストとし、追加の日次リクエスト可能数の上限を毎日動的に変更する下記仕様といたします。

  • 初期リクエスト可能数 : 1日あたり 8,640リクエスト(API利用開始より60日間)
  • PA-APIより取得した商品リンクより発生した、過去30日間の発送済み商品売上$0.05(日本円で約5円)ごとに1リクエスト追加
  • 1日の最大リクエスト可能数は、1日あたり864,000リクエスト

売上実績の発生がない場合は、PA-APIの利用開始はできません。
また、発送済み商品売上が過去30日以内に発生していない場合、PA-APIをご利用いただけなくなる恐れがございます。

なお 、Amazon Link Builder(WordPressプラグイン)のご利用についても、先に挙げた条件が適用となり、売上実績が必要となります。

出典:アソシエイト・セントラル – ヘルプ

「TooManyRequests」エラーの推定される原因

 Cocoonではこのエラーが発生したときに、ブログの管理者に対してメールを送ってくれる機能があるのですが、このメールが1日に何通も届くようになってしまいました。しかし、Amazonの広告を貼り付けてあるページに対して、この制限に引っかかるようなアクセス件数があるとは思えません。さらには、Cocoon自体に何回も同じ広告のAPIを呼び出すことがないように、24時間分はキャッシュしてくれる機能まで付いています。何か自分の設定に問題があるのではないか?と情報を探していました。

 その中で、Cocoonの掲示板に同様の質問があるのを見つけて読んでみると、プラグインが関係しているかもしれないということが判りました。

「Broken Link Checker」が原因か? 対策実施

 このブログでも、「Broken Link Checker」というプラグインを利用しています。このプラグインは購読者が困らないように、「Not Found」や「エラー」になってしまったリンクを自動的に見つけてくれる有り難いプラグインです。このとき、全てのリンクを順番にチェックしていくので、Amzonに対しても多くのAPIのコールをしてしまっている恐れがあります。

 もちろん、「Broken Link Checker」をプラグインから削除または無効化しても良いのですが、そうすると、便利な「Broken Link Checker」自体が使えなくなってしまい、ブログのメンテナンスが非常に大変になります。

 そこで、「Broken Link Checker」の設定を確認してみると、「チェックするリンクの種類」というタブの中に、除外リスト(これらの単語を含む URL のリンクをチェックしない (1行にひとつ) :)という設定がありました。ここに書いた文字列を含むURLはチェックを行わないようです。そこで、「https://www.amazon.co.jp/」の文字列を入れておきました。

Broken Link Checkerの設定

 もし、Amazonでその商品ページが削除されてしまった場合は、「Broken Link Checker」での通知は行われなくなりますが、Cocoon自体にメールで通知してくれる機能があるので大丈夫です。

 この設定を実施した時点では、すでに「TooManyRequests」の状態になってしまっているので、これからもエラーは発生します。2~3日待って、エラーが発生しなくなることを確認したいと思います。

コメント