AmazonのAPIに認証が必須になるようなので対応しましたとさ

Product Advertising API

Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ
けっこー理不尽だなーと思って放置してたんだけど、さすがに期日が迫ってきたので対応しなきゃいけない。まぁ、ここの場合は広告にしか使ってないんで、はずしても問題ないんですがね。。。

Amazon API 認証プロキシがあるみたい

↓これ!
Amazon API認証のPROXYを書いたよ(2)
んでもって、さらに、Apacheモジュールもあるみたい。
Apache モジュール版の Amazon API 認証プロキシを作ったよ
これはありがたいなー、新仕様対応も意外とサクッと終わるかも。

Apache モジュール版を導入する

では、サクッと導入しますよー。
ちなみに、サーバ無いとか、あってもイジル権限ないって場合はリバースプロキシが提供されてるっぽいのでありがたくこれを使わせてもらうといいですよ。

[mod_apreq2をインストール]
※パッケージ版だと、apxsの場所が違うかも。

wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/libapreq/libapreq2-2.12.tar.gz
tar zxvf libapreq2-2.12.tar.gz
cd libapreq2-2.12

./configure --with-apache2-apxs={Apacheのディレクトリパス}/bin/apxs
make
make install

[mod_amazon_proxyをインストール]

git clone git://github.com/machu/mod_amazon_proxy.git
cd mod_amazon_proxy

{Apacheのディレクトリパス}/bin/apxs -c mod_amazon_proxy.c
{Apacheのディレクトリパス}/bin/apxs -i mod_amazon_proxy.la

[Apache設定]

LoadModule apreq_module modules/mod_apreq2.so
LoadModule amazon_proxy_module modules/mod_amazon_proxy.so
<Location /amazon_proxy/ja>
  AmazonAccessKey {Your Access Key ID}
  AmazonSecretKey {Your Secret Access Key}
  AmazonEndPoint webservices.amazon.co.jp
  AmazonXsltEndPoint xml-jp.amznxslt.com
  SetHandler amazon_proxy
</Location>

自分のアクセスキーとシークレットアクセスキーはAmazonWebServicesのサイトで確認できるので、その値に書き換えましょう。

ちなみに、リクエスト時、"Style"パラメーターでXSLT指定してる場合、AmazonEndPointを"xml-jp.amznxslt.com"にしないとエラーが返る模様。
なので、データ整形する場合は下記の設定にする必要があるようです。(仕様なのかバグなのかはわかりませんよー)

[追記:20090729]
作者様から"Style"パラメーター用に"AmazonXsltEndPoint"という設定を追加したと、コメント欄でお知らせいただきました。
対応ありがとうございます。

リクエストに"Style"パラメーターがある場合は"AmazonXsltEndPoint"で指定されているホスト、それ以外は"AmazonEndPoint"で指定されているホストに切り替わるみたいです。
すでにインストール済みの方はmod_amazon_proxyのソースを最新にして再インストールしましょう。

[Apache設定(2)]

LoadModule apreq_module modules/mod_apreq2.so
LoadModule amazon_proxy_module modules/mod_amazon_proxy.so
<Location /amazon_proxy/ja>
  AmazonAccessKey {Your Access Key ID}
  AmazonSecretKey {Your Secret Access Key}
  AmazonEndPoint xml-jp.amznxslt.com
  SetHandler amazon_proxy
</Location>

終わったら、Apacheを再起動して完了です。

クライアントの書き換え

書き換えは簡単で、リクエストURLのベースを置き替えるだけです。

http://webservices.amazon.co.jp/onca/xml
http://ecs.amazonaws.jp/onca/xml
http://xml-jp.amznxslt.com/onca/xml

↓↓↓

http://{あなたのドメイン}/amazon_proxy/ja

ちなみに、提供されているリバースプロキシを使う場合も同じく書き換えるだけです。

http://webservices.amazon.co.jp/onca/xml
http://ecs.amazonaws.jp/onca/xml
http://xml-jp.amznxslt.com/onca/xml

↓↓↓

http://honnomemo.appspot.com/rpaproxy/jp/

簡単ですね。

まとめ

以上で仕様変更への対応は問題ないらしいですが、2009年8月15日以降にちゃんと動作してるか確認は必須ですね。
こういうのは忘れがちなので、スケジュールに入れとくといいかもしれませんよ。

--
Amazonは仕様変更が多いなぁー、強気だなぁ。

  • まちゅ 2009/07/29 21:59

    mod_amazon_proxyですが、Styleの対応が抜けていたので、ちょうど先ほど追加したところです。
    ソースを最新にしていただいて、httpd.confにてAmazonXsltEndPointの設定を追加していただければ両方に対応できます。

  • xlune 2009/07/29 23:56

    >まちゅさん
    Style対応のお知らせ、ありがとうございます。
    記事の関連箇所を修正いたしました。

Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)