Amazon Product Advertising APIでHTTP Status 503: Service Unavailableになる

Amazon Product Advertising API(PA-API)でリクエストしたら、以下のエラーが表示されました。

Error! RequestThrottled
HTTP Status 503: Service Unavailable
AWS Access Key ID: xxxxx. You are submitting requests too quickly. Please retry your requests at a slower rate.

数秒、数分、数時間、1日、3日たってもエラーのまま。

アクセスキーIDとシークレットキーを再発行してみてもエラーのまま。

調べてみた結果、

2019/01/23にPA-APIの利用ポリシー変更が原因のようです。

[重要] Product Advertising API 利用ポリシーの変更について

この変更の大まかな内容ですが、

リクエストの上限がすべてのユーザーに対して

1秒に1リクエストできたのが、

10秒に1リクエストに減りました。

また、

30日間、PA-API経由で売り上げがない場合、リクエストエラーになってしまいます。

こうなった場合、Amazonアソシエイト・プログラムの他のサービスで売り上げが発生したら、再びPA-APIが使えるようになるようです。

劣化。。

アマゾン商品検索 Amazon Product Advertising API を使ってみる

Amazon Product Advertising APIを使ってアマゾンの商品検索をする方法

Amazon アソシエイト・プログラムのアカウントを作成する

Amazon Product Advertising APIを使うには、以下が必要です。

  • アクセスキー
  • シークレットキー
  • アソシエイトID

以下のページにアクセスして、アカウントを作成します。
Amazon アソシエイト・プログラム

Amazon Product Advertising API Scratchpadでリクエストを作成する

アクセスキー、シークレットキー、アソシエイトIDを取得したら、
下記のサイトにアクセスします。
Product Advertising API Scratchpad
Amazon Product Advertisingのリクエストは結構、複雑なのですが、このサイトを使うと簡単にリクエストが作成できます。

アクセスキー、シークレットキー、アソシエイトIDを入力する。

例として、Item Searchをしてみます。
左側の Select operation で Item Search を選択し、
下記の箇所に取得したアクセスキー、シークレットキー、アソシエイトIDを入力します。

Item Searchセクションの設定をする

続いて、Item Searchセクションに、例として以下のように設定し、Run requestボタンを押します。

Responseの確認をする

リクエストに成功すると、Responseセクションにこんな感じで表示されます。

XML responseタブに切り替えると、XML形式のレスポンスコードが確認できます。

HTML responseタブに切り替えると、HTML形式のレスポンスコードが確認できます。

Code snippetsを確認する

Laravelで使いたいので、Code snippetsのPHPタブを選択して、コピーします。
あとは、Laravelで、ContollerやBlade.phpで適当に加工して使います。

Open Weather Map Web APIを使ってiPhoneアプリ作成

 

Open Weather Mapが提供しているWeb APIを使ってiPhoneアプリ作成してみました。

Web APIの使い方をメモしておきます。

 

確認環境:Xcode 7.3

 

有名どころのコンテンツ各社が提供しているWeb APIを活用すれば、アプリ開発の際、自分で何から何まで全部作る必要がなくなり、

さらに、Web APIを提供しているコンテンツの洗練されたノウハウを取り入れることもできます。

 

今回は、Open Weather Mapが提供している気象情報のWeb APIを使ってiPhoneアプリ作成してみます。

 

まず、はじめに、以下の Open Weather Mapのサイトにアクセスして、Sign Up をします。

 

Sign Up が完了したら、Sign Inしてください。

その後、「API」をクリックします。以下のような画面が表示されます。


Tip_01_01_009a

 

今回は、Current weather data の Subscribe を選択します。

FreeプランでAPI key を取得します。


Tip_01_01_009b

 

API Key が作成されたこと確認します。

このAPI Keyは後から使います。


Tip_01_01_009c

 

次は、Xcodeでコードを書いていきます。

Single View Applicationでプロジェクトを新規作成します。

 

プロジェクトを新規作成したら、SBJsonフレームワークをプロジェクトに取り込みます。

GitHubで公開されているものの最新版はv4.0.0ですが、

うまく使いこなせなかったので、今回はv3.2.0を使います。

Downloads の Source code (Zip)をクリックして、ダウンロードします。


Tip_01_01_009d

 

ダウンロードしたZipファイルを適当な場所で解凍します。

解凍したら、Classesフォルダのファイルを全て、Xcodeのプロジェクトにコピーします。

ルート階層に「json320」という名前でグループ(フォルダ)を作って、そこに放り込みます。


Tip_01_01_009e

 

次はStoryboardの設定をします。

Storyboardのど真ん中にラベルを1つだけ配置します。

 

このラベルを ViewController.h に「label1」という名前でアウトレットしておきます。

あとは、先ほどプロジェクトに取り込んだ、SBJsonフレームワークが使えるように、

「#import "SBJson.h"」を追加しておきます。


Tip_01_01_009f

 

最後に ViewController.m に以下のコードを書きます。

12行目の★★★の箇所には、先ほど取得した、自分のAPI Keyを記述します。

実行すると、こんな感じにラベルに東京の現在の天気が表示されます。


Tip_01_01_009g

今回はリクエストデータで東京の現在の天気としていますが、

上記のソースコードの12行目を変更すれば、名古屋や大阪などの天気を表示することもできます。

このようなリクエストデータやレスポンスデータの仕様は、以下に書かれています。

 

このようにWeb APIをうまく使えば、楽してリッチなコンテンツの作成ができます。

Web APIってほんとすごいし、おもしろいですね。