プロキシも1アプリケーション扱い
Product Advertising API
4. 利用条件
(p) お客様自身も、また、お客様が Product Advertising API にリクエスト送信を行うアプリケーションを作成し公表した場合は、エンドユーザーによりインストールされたかかるアプリケーションの各コピーは、毎秒1 コールを超えないものとし、また、当方の事前の書面による同意なしに、Product Advertising API 宛にまたはこれより、サイズが40Kを超えるファイルを送信しないものとします。
↓はAmazon API認証のPROXYを書いたよ(AmazonのAPI認証導入はOSSに対する挑戦だよなぁ(4)) - ただのにっき(2009-06-19)のid:IwamotoTakashiさんのはてなブックマーク経由。
http://developer.amazonwebservices.com/connect/thread.jspa?threadID=32142&tstart=0&messageID=133116#133116
PROXY実装のケース でも、万一hack行為が判明した場合は、上記対策を迅速に取っていただく必要があります。
また、毎秒1コール制限が通常と同様に適用となりますので、リクエスト制限超過とならないようご注意ください。
まぁ、Amazonからしてみたら当然なんでしょうが……
で、考えていたんだけれど…
にどんな対策をするか……とりあえず考えつくのは、
- 素直に、コール制限をつける(一定時間あたりのリクエスト数が閾値を越えたら、503(Service Unavailable)を返す)。
- Signature算出後、Amazonへ直接リクエストは送らず、クライアントに対して302(Found)を返してSignature付URLへリダイレクトさせる(結果として、Amazonへ直接リクエストを出すのはクライアントアプリケーション)。
だったので、各設定を追加してみました。
# === リダイレクト設定 USE_REDIRECT=True # True:Signature付きURLへリダイレクト False:Signature付きURLの内容を取得して返す # === アクセス制限 ACCESS_PERIOD_SECONDS=60 # 集計期間(秒) ACCESS_LIMIT=10*ACCESS_PERIOD_SECONDS # 集計期間中のアクセス数上限 (0:制限なし)