Product Advertising APIを使ったアフィリエイトリンクの処理を見直し
2017.02.14
Amazonの商品をアフィリエイトリンクで紹介するのにAPIを利用しているのですが、久しぶりにAWSにログインすると、カード情報を求められたり、別なページで登録情報を設定しないと本人確認ができなかったり、IAMアカウントってどうやって設定するんだっけ?とややこしいことこの上ないProduct Advertising APIですが、そもそもIAMに表示されるサービス名のecsってなにを指しているんですかね…Amazon EC2 Container Service?
導入した当初から気になってはいたのですが、キャッシュあもあるし、まあいいやと先延ばしにしていた問題を修正しました。
Code: "RequestThrottled"
Message: "AWS Access Key ID: **********. You are submitting requests too quickly. Please retry your requests at a slower rate."
パラメータを投げると、時折上記のようなエラーが返ってくるのですが、この場合商品のリンクや画像は表示されないので、表示されるまでページ自体を再読込する必要がありました。
こういった場合はある程度遅延させてから再度パラメータを投げるわけですが、Amazonの情報を取得するのはajaxによる非同期通信となるため、リクエストを管理することができません。
遅延は各々の処理でしか行われないので、ある一つの遅延中に他の非同期のリクエストがバンバン飛んできます。
とは言え、エラーが返ってくるときもあればえらい待たされるときもあるわけで、あんまり気にしなくてもいいかな、という感じです。
ページを再読込させるよりはマシでしょうということで。
久しぶりにdo-whileなんて使いました。
あと、遅延は1秒なので、Amazonの機嫌が悪いとゆっくり商品画像が出てきます…。