Amazon Product Advertising APIで使うシークレットアクセスキーを取得する

2014/4/21よりAWS(Amazon Web Service)の仕様が変わりルートアカウントのシークレットキーが表示されなくなりました。AmazonJS(Amazon Product Advertising API)では以前としてルートアカウントのアクセスキーとシークレットアクセスキーが必要なようなので取得方法を調べました。

この記事はAmazon Product Advertising API(AWS)のアカウントをとったがシークレットアクセスキーの取得方法がわからないという人向けです。この問題にぶち当たるまでの道は他のサイトを見てたどり着いてください。。。

では、AWSのコンソールに移動して取得したAWSアカウント・パスワードを入力してください。

コンソールの右上の自分の名前のプルダウンして出てくるメニューからSecurity Credentialsという項目をクリックします。

aws-acount-for-product-advertising-api-01.png

IAM Userを始めるか聞かれるのですが、今は不要なので閉じます。

aws-acount-for-product-advertising-api-02.png

右側の上から3つ目くらいのAccess Keys (Access Key ID and Secret Access Key) を開いて、Create New Access Key ボタンを押します。(2つまでしか作成できないようなので、既に2つ作成している場合はどちらかを諦めて削除してください)

aws-acount-for-product-advertising-api-03.png

作成すると Access Key IDとSecret Access Keyが表示される のでコピーして保管します。(Secret Access Keyは作成時しか表示されないので紛失した場合は再度作りなおすことになります)

aws-acount-for-product-advertising-api-04.png

上記の二つの値をAmazonJSの設定画面で設定してください。

IAM UserはProduct Advertising APIに対応していない?

そもそも仕様変更の意図としてAWSアカウントの元でユーザ(IAM User)が作成でき、「個別のユーザに適切な権限を与えよ」と理解していたのでその通りに試したのですが、何故かIAM UserでProduct Advertising APIは使えませんでした。

まずProduct Advertising APIに対する権限ポリシーが存在しない。Administration Policyを渡してみたけどそのユーザのアクセスキーを使うとコード AWS.InvalidAccount のエラーになって

お客様の AccessKey Id は Product Advertising API に登録されていません。https://affiliate-program.amazon.com/gp/flex/advertising/api/sign-in-jp.html で登録後に得られる AccessKey ID をご使用ください。

とか怒られる。

ちょっと焦ってForumなどを検索して見つかったから助かった。
Your AccessKey Id is not registered for Product Advertising API.
https://forums.aws.amazon.com/thread.jspa?threadID=151500

でもそのうち解決されるかもしれないのでそれまでの繋ぎということで。