Product Advertising APIの意味不明なエラー

どんどん使いづらくなっていくProduct Advertising API・・・
少し前の情報は殆ど使えず、どんどん変化していきます。
変化する頻度の割に公式なサポートはしないという、本当にすごいAPIです 笑

実はこの2017年10月にビッグマイナーチェンジがありまして、
海外の検索を実行するにはProduct Advertising APIを登録したメールアドレスで各国のアソシエイト(アフィリエイト)登録をしないと駄目、ということに成りました。

エラー的にはこんなメッセージが出るようになりました。

Your AKIXXXXXXXXXXXX is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.com/assoc_credentials/home.

この場合だと
通常は、.comつまりアメリカでアソシエイト登録をすればすぐに正常な結果が出るようになります。
ところが、アソシエイト登録しても、このエラーが出続けることがあります。
WEB上でも色んな所で悲鳴が上がっています。
どこの情報も決定打はなく、

  • すべて削除してやり直したら通った
  • 1日待ったら通った

のような感じです。もちろん、この通りにしても駄目という声が結構あるわけです。

 

そしてもう一つこんなエラーが出ることがあります。

Your AccessKey Id is not registered for Product Advertising API. Please use the AccessKey Id obtained after registering at https://affiliate.amazon.co.jp/assoc_credentials/home.

これに関してはもうまったく意味が不明です。

Product Advertising APIのページで取得したアクセスキーなのに
「Product Advertising APIに登録されてない」とはこれ如何に・・・。

これも結局どうすればいいのかが不明で、やっと見つけた情報がこんなものです。

http://www.georgekatsoudas.com/contact/knowledgebase.php?article=150

「多分不具合だから24?48時間待とう」と言うものです。うーんそうなのか・・・?

https://affiliate.amazon.co.jp/contact?ac-ms-src=ac-nav

一応ここに問い合わせ先があります。でも返事が来るかどうかは謎です。

一応聞いてみようかとは思っているのですが・・・。

 

amazonAPIの仕様変更(2017/10/3)海外で使うにはアソシエイト登録が必要に

アマゾンからのお知らせとして以下のようなものが来ていました。

Product Advertising API のご利用条件について

Product Advertising API (以下PA-API) をご利用のお客様に重要なお知らせです。

PA-APIはAmazonアソシエイト・プログラムにご登録いただくことで利用可能になりますが、複数の国のPA-APIを使用する場合、それぞれにおいてアソシエイトアカウントの作成が必要になります。お客様のアカウントは日本以外のPA-APIのEndpointにアクセスした記録がありましたが、当該国ではアソシエイトアカウントが存在しない可能性があります。今後も引き続き当該国のPA-APIをご利用になる場合は、当該国においてもAmazonアソシエイト・プログラムへのご参加をお願いいたします。なお、日本のPA-APIのみをご利用になる場合は、対応の必要はございません。
日本のPA-API Endpoint: https://aws.amazonaws.jp/onca/xml

下記の方式でのご対応を推奨いたします。

PA-APIを利用したいそれぞれの国でAmazonアソシエイト・プログラムに参加してください
PA-APIのページで認証キーを取得してください(アクセスキー、シークレットキー)
PA-APIを呼び出す国ごとに、それぞれで取得した認証キーを使い分けてください

FAQ

Q1. 日本以外の国のAmazonアソシエイト・プログラムに参加するにはどうすれば良いですか?

A1. 各国でのAmazonアソシエイト・プログラムへの参加方法は、こちらの資料(英語)を参照してください。

Q2. 私はすでに日本以外の国でも
Amazonアソシエイト・プログラムに参加していますが、別のメールアドレスで登録しています。どのようにすれば引き続き利用できますか?

A2. 日本以外の国ですでにAmazonアソシエイト・プログラムに参加している場合は、PA-APIのページにて認証キーを取得いただき、当該国のAPIコール時にはその認証キーを使うようにして下さい。また、このメールを送付させていただいているメールアドレスを、日本以外の国のアソシエイトアカウントのメインユーザー(Primary
User)、またはサブユーザーとして設定をする形でもご利用を継続いただくことができます。メインユーザーの詳しい切り替え手順はこちらの資料(英語)をご参照ください。

Q3. 私はすでにAmazonアソシエイト・プログラムのアカウントとPA-APIのアカウントを持っています。どのようにすればアソシエイトアカウントとPA-APIアカウントが同じ国に関連付けされているか確認することができますか?

A3. PA-APIアカウントの登録に利用したメールアドレスがそれぞれの国のAmazonアソシエイト・プログラムのアカウントのメインユーザー(Primary
User)、またはサブユーザーになっていることをご確認ください。メインユーザー、またはサブユーザーになっている場合は問題ございません。

Q4. いつまでに対応を終える必要がありますか?

A4. 2017年10月03日までに日本以外の国にて有効なAmazonアソシエイトのアカウントを設定し、取得した認証キーを利用するか(推奨)、PA-APIアカウントの登録に利用したメールアドレスをアソシエイトアカウントのメインユーザー(Primary
User)、またはサブユーザーに設定することで関連付けを完了させて下さい。

Q5. 2017年10月03日までに対応しなかった場合、どうなりますか?

A5. PA-APIのアクセスが制限され、下記の内容がレスポンスされるようになります。対応としてはメッセージにあるように日本以外の国のAmazonアソシエイト・プログラムへのアカウント登録を行い、関連付けを完了させる必要があります。
エラーコード : AWS.InvalidAssociate
メッセージ:“Your [[access key]] is not registered as an Amazon Associate.
Please register as an Amazon Associates at [[affiliate program link]]"

 

2017/10/3以降はPAAPIを海外で使うにはアソシエイト登録しないと駄目だよ、ってなことが長々と書いてあります。

しかし、実際にはずっと以前からこのようになっていました。なぜいまさらアナウンスするのか謎なのですが、10/3に更に何か変わるかもしれないので、10/2のうちに少し試しておきました。

実はアメリカ(com)についてはアソシエイト登録済みなので正常に検索できます。

ところがイギリス(uo.ck)ではこのような表示が出ます。

<ItemSearchErrorResponse xmlns="http://ecs.amazonaws.com/doc/2011-10-26/">
<Error>
<Code>AWS.InvalidAssociate</Code>
<Message>
Your AKIXXXXXXXXXXXX is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.co.uk/assoc_credentials/home.
</Message>
</Error>
<RequestID>XXXX-XXXXX-XXXX</RequestID>
</ItemSearchErrorResponse>

いま10/2ですけど、出ます 笑
そして、ずっと以前からですけどね。

何か変わるか、明日も試してみたいと思います。

今更AmazonAPIのテスト方法とか(2017)

PAAPI(AmazonAPI)はある時突然仕様変更を行い、
アクセスキーIDの取得方法がガラッと変わりました。

なので、昔ちょっと使ってたけど、最近使ってなくてよくわかんないんだよね~
って方向けにちょっと解説をしておこうと思います(自分のためにも・・・すぐ忘れちゃうので・・・)

取得方法

ここから取得します。
IAM Management Console (Web)
https://console.aws.amazon.com/iam/home?#/security_credential

ここの
アクセスキー(アクセスキー ID とシークレットアクセスキー)
の+をおして開いて新規作成するだけです。一時的に無効にしたりすることが出来ます。
で、取得できるのはたったの2アカウントだけです。
シークレットアクセスキーは取得した瞬間にしか確認できなくて、忘れたら作り直すしかありません。
こうやって何度も削除していると、ここに削除済みアカウントが溜まっていきます。この仕様はなんとかならなかったのかなあ・・・と思います。無駄仕様・・・。

テスト方法

Amazon公式のテストツールがあります。
Signed Requests Helper
http://associates-amazon.s3.amazonaws.com/signed-requests/helper/index.html

使い方は、一番上のアクセスキー ID とシークレットアクセスキーと
検索クエリをUnsigned URLに貼り付けしてDisplay Signed URLを押すだけです。

ちなみに検索クエリ例はこうなってます。「harry potter」で検索って感じです。

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Version=2011-08-01&AssociateTag=PutYourAssociateTagHere&Operation=ItemSearch&SearchIndex=Books&Keywords=harry+potter

一番下のSigned URL:にでてきたURLでアクセスするとXMLが取得できます。

ところがやってみるとわかるのですが、これはエラーになります。

多分このドメインをecs.amazonaws.jpにすると通ります。
アクセスする国のアソシエイトIDに申請をしていないIDだと通らなくなったようです。

<Code>AWS.InvalidAssociate</Code>
<Message>
Your AKIXXXXXXXXXXXXXXXXX is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.com/gp/associates/join/landing/main.html.
</Message>

ちなみに、検索クエリの「AssociateTag=」がアソシエイトIDなのですが、ここ何を入れても関係ありません。

本当にAmazonは謎仕様です・・・。

AmazonAPIが海外ドメインで使えなくなった模様

AmazonAPIって仕様変更がホント多くってまいります。
しかも、サポートしないよ、ってスタンスなのがスゴイ。
謎仕様でうまく行かなくても、勝手にそっちでなんとかしてよ、ってスゴイ。まあ、お金取られるよりましだけど。

アソシエイト?

結構出るエラーメッセージなんだけどこれ。

<Code>AWS.InvalidAssociate</Code>
<Message>
Your AKIxxxxxxxxxxxxxxxx is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.com/gp/associates/join/landing/main.html.
</Message>
この
AWS.InvalidAssociate
とか
is not registered as an Amazon Associate. Please register as an associate
で検索するとすぐに色んなブログがヒットします。
アマゾンの公式がヒットしないのは苦笑いです。
で、その解決方法は・・・
PAAPIを取得したメールアドレスとAmazonAssociate(アフィリエイト)のメールアドレスを一緒にする
と言うものです。
ところがこの回答に私は納得できませんでした。

ていうか、同じだし・・・

メールアドレスを別にするなんて面倒なことはしていないのです。
なら、なぜダメか?
上の引用をよーく見ると分かるのですが、「com」になっています。

そうなんです。

どうも、海外のAWSにアクセスするにはアソシエイトIDをその国で申請しないとだめになったようです。

もしやと思い、
https://affiliate-program.amazon.com/gp/associates/join/landing/main.html
からアソシエイトIDの取得をしてみました。
(途中電話認証があります)
それで、取得してから10分ぐらいあとになってアクセスしてみると・・・・!
見事繋がった!
というわけで、ここ最近(2017/08)のことなのですけど
海外のAWSにつなぐには海外のアソシエイトに登録しないとダメ、
という仕様変更が行われたようです。
(ところが、古くからのアカウントを使っている方はこの限りではないようです。
 もしかしたら、単なる準備期間の可能性もありますが。。)