アクセスと認可
SP-APIアプリケーションは開発者プロファイルに登録し、Inventory and Order TrackingやPricingなどのロールを申請します。ロールによって呼び出せる操作が決まります。配送先住所など購入者の個人データにアクセスするロールは制限付きで、追加の承認が必要です。
セラーやベンダーは、Login with Amazon(LWA)を通じてアプリケーションにアクセスを許可します。アカウントごとにリフレッシュトークンを保存し、有効期限の短いアクセストークンと交換します。リフレッシュトークンはパスワードと同様に扱い、暗号化してログには残さないでください。
レート制限がアーキテクチャを決める
操作ごとに使用量プランがあり、定常レートとバースト枠が決まっています。超えるとAmazonはHTTP 429を返します。セラーごとに制限が調整される操作もあり、レスポンスヘッダーで現在のレートを確認できます。
- すべての呼び出しを、アカウント別・操作別のリミッター付きキューの後ろに置く。
- 429や5xxは指数バックオフとジッターで再試行し、短いループで繰り返さない。
- 書き込みを冪等にし、再試行したフィードや更新が二重に適用されないようにする。
レポート、フィード、リアルタイム呼び出し
すべての問いにリアルタイム呼び出しが必要なわけではありません。Reports APIは大量データのファイル(全出品、決済、FBA在庫など)を非同期で作成します。レポートを依頼し、完了を待ってからドキュメントをダウンロードします。大量・単品の書き込みはFeeds APIとListings Items APIが担います。
目安として、履歴と大量データにはレポートを、分単位で正確である必要がある少数のもの(出荷前の特定の注文など)にはリアルタイム呼び出しを使います。
ポーリングの代わりに通知
Notifications APIは、注文ステータスの変化、価格の変更、レポートの完了などのイベントをAmazon SQSのキューやAmazon EventBridgeに送ります。購読すればポーリングの大半が不要になり、必要な呼び出しのためにレート枠を残せ、連携の反応も速くなります。
個人データとコンプライアンス
AmazonのData Protection PolicyとAcceptable Use Policyはすべての連携に適用されます。購入者の個人データは、対象の操作に対する制限付きデータトークンがある場合にのみ返され、必要な期間(通常は出荷と税務のため)だけ保持でき、保存時には暗号化が必要です。
本番運用
すべてのリクエストを、操作、アカウント、AmazonのリクエストIDとともに記録します。429の増加、失敗したレポート、処理が止まったキューにはアラートを設定します。SP-APIの廃止スケジュールも追ってください。Amazonは告知した日に旧バージョンを廃止するため、見落とすとその日に連携が止まります。
Amazonはサードパーティ製アプリのSP-API開発者向けに料金も導入しています。費用を見積もる前に、開発者ドキュメントで最新の条件を確認してください。