10/20~22にかけて発生した障害について

10/20 ~ 10/22 にかけて、amazlet ツールで商品を検索すると "Too many temporary Amazon errors" というメッセージが表示されて、検索がエラーになるという障害が発生しました。現在は復旧しています。

amazlet ツールが内部で利用している Amazon.comProduct Advertising API へのリクエスト上限に達していたことが原因でした。

Each account used to access the Product Advertising API will be allowed an initial usage limit of 2,000 requests per hour.

とあります通り、現在 Product Advertising API では 2,000リクエスト/時間までと制限が課せられています。amazlet ツールからのリクエストがこの上限に達してしまったため、件のエラーが発生していました。制限は1時間ごとに解除される、という仕様から1時間たつとエラーが解消されまたしばらくするとエラーになる、ということを繰り返しており、開発者である私がそれが一時的な不具合であると思い込んでしまい、上限に達してしまっていることに気がつかず解決までに時間を要してしまいました。

これまで amazlet ツールは、一緒に運営している amazlet.com と同一の Product Advertising API アカウントで運営を行ってきました。amazlet.com 側ではコンテンツを動的に生成するために多数のリクエストを、Product Advertising API に対して断続的に送っています。今回 amazlet ツールと amazlet.com で利用する Product Advertising API のアカウントを分離することにより、上限を回避することで対応を行いました。

根本的には上限に達しないよう Product Advertising API のドキュメントの指示に従ったシステム改修を行うべきところですが、まずは復旧を優先するため、アカウントの分離で対応を行いました。

ご迷惑をおかけしました。

参考: リクエスト上限に達しないためのシステム改修箇所について

Each account will receive an additional 500 requests per hour (up to a maximum of 25,000 requests per hour) for every $1 of shipped item revenue driven per hour in a trailing 30-day period. Usage thresholds are recalculated daily based on revenue performance. To ensure that each account qualifies for the additional threshold increase, the URLs served by the Product Advertising API must be used when linking back to Amazon and the Associate tags used must belong to the account owner.

というドキュメントの指示に従った改修を行う必要があります。