AmazonのREST APIの変更とPHPでの対応

AmazonのECommerceServiceのAPIが変更され、Product Advertising APIとなりましたが、

この2009-08-15で旧APIが廃止されるため、一番使ってるPHPでのamazonアクセスをProduct Advertising APIに対応させるため、新旧APIのURLの変換関数を書いてみました。

新旧変更点

この新APIでは、TimestampとSignatureという二つのリクエストパラメータが必須になりました。それ以外のパラメータや戻ってくるメッセージは同じですが、この変更に伴いURLを作るための手順が変わることになります(以前のように、文字列の連結だけURLを作ることは不可能になる)。

  • Timestampの値は現在日時(GMT)
  • Signatureの値は秘密鍵を使ったリクエストメッセージの署名


Signatureの計算の仕方やURLの作り方は、以下の例が参考になるでしょう。

上記文書は正直はまる点も多いので注意点を述べておきます。

  • timestampもふくめパラメータのvalueはすべてurlencodeするのは必須
  • 10の署名が、8,9の署名の値と同じで無いが、実際はそのまま使う

秘密鍵の入手方法

署名用の秘密鍵は、上記URLの右のボタンからログインしたあと、"Manage Your Account"リンク、"アクセスキー情報"のページの右の"Your Secret Access Key"にある"Show"をクリックして出てくる文字列を使います。

REST APIを使うためのAccess Key IDごとに、Secret Access Keyも対応してそれぞれ必要になるため、Access Key IDを公開してコピペで使うことが実質不可能になりました。

PHP用新REST API変換関数

ecs.amazonaws.jpに送ってた旧API向けURLを、新API対応させたURLを返します。