読者です 読者をやめる 読者になる 読者になる

Amazonの罠にかかるな!Product Advertising APIのハマりポイントを半導体エンジニアが整理したよ

技術

f:id:PSYuki:20170314011557p:plain

おはようございます。H&S両刀使いのツムさんです。 

 

ちょっと訳あってAmazonのEC用に提供されている Product Advertising APIを触っているのですが、結構(5年程度?)なブランクがありドツボにハマってしまったのでここらで整理しておきます。

 

 

同じようにAmazon APIを使う業務が久しぶり(数年ぶり)の人が居たら参考になると思います。

 

AWS(Amazon Web Service)のアカウントが必要

以前はAmazonアソシエイト(アフィリエイト)のアカウントを持っていればそこからProduct Advertising APIの利用アカウントの申請が出来たと思うのですが、今はAWS(Amazon Web Service)のアカウントを別途作る必要がありました。

 

AmazonアソシエイトとAPIのアカウントのメールアドレスは同じにする

これ。むちゃくちゃハマりました。昔はこんな制約なかったような気がするんだけどなぁ。。。メールアドレスが違っていると、アクセスキーの認証は成功するけど、アクセスキーのアカウント(APIアカウント)がAmazonアソシエイトのアカウントと紐づけられないと怒られます。

APIのリクエストURLをWebブラウザでアクセスしてみたときに、下のようなInvalidAssociateというエラーコードが帰ってきたら、メールアドレス問題と思っていい。

 

f:id:PSYuki:20170314003338p:plain

アソシエイトタグ(AmazonアソシエイトのトラッキングID)が必要

これも以前は必要なかったはず。APIアカウントのアクセスキーとシークレットキーがあればアクセスできていたが、最新のAPIではアソシエイトタグが必要になっている。

 

どうもアソシエイトタグとAPIアカウントの紐づけのためにメールアドレスを利用しているようで、昔はAPIアカウント単体で動作させることが出来ていたところに、アソシエイトアカウントと紐づけて利用できるように改良した。そのリンク情報としてメールアドレスを使っているんじゃないか。と。

なので、メールアドレスが異なっているとアソシエイトアカウント認証まで進まない(InvalidAssociate)というわけ。

 

Amazonのサンプルプログラムが古い

Product Advertising APIのWebから入手できるサンプルソースは内容が古く、上述のアソシエイトタグを使うコードになっていません。この部分は改造が必要です。

該当プログラムはこれ。C#のサンプルコードですが、他の言語も同様に古い可能性があるので要注意です。

 

f:id:PSYuki:20170314005522p:plain

 

 

APIアカウント(IAMアカウント)のポリシー設定が必要

IAMアカウントというのは昔はありませんでした。

(APIアカウントのルートアクセスキーとシークレットキーでAPIを使えていた。)

IAMアカウントは詳細なアクセスコントロールを実現するための仕組みです。このIAMアカウントはポリシーを設定しないと何の権限もない状態のようなのでAPIのアクセスも失敗してしまいます。

 下のように、AdministratorAccess権限をつけておくとAPIへアクセスできるようになります。

f:id:PSYuki:20170314010232p:plain

 

このデバッグに丸々一日を潰してしまったので、Amazonの甘いわなに引っかからないようにしましょう。