出品パートナーAPIのプログラム開発の準備

これはAamzonの出品パートナーAPIを使えるようにするための奮闘記です。

プロローグ

AmazonのAPIサービスの1つ「MWS」は、Amazonで販売している商品を出品者があれこれできる便利なもの。

その後継として新しい「出品パートナーAPI」というものが出た、というアナウンスがAmazonの公式ブログで発表されたのが2020年9月29日でした。

「時期は未定ですが、将来的にはMWSが廃止される予定ですので、
早めの移行をご検討いただくことを推奨いたします」というコメントを信じてノンビリしていたら
2021/4/7に「[重要なお知らせ]Amazon MWSのSP APIへの移行」という件名のメールが届きました

なんと「2022年7月31日からMWSは使えなくなる!」らしい

そこで出品パートナーAPI(今後略してSP-APIと書きます)を導入しようとしたのですが、

なんだこれ?、全然よくわからない。
どこから読めばいいのかさえわからない。

さらにAmazonから提供されているのはプログラミング言語がJAVA。
ほしいのはPHP。

こうしてSP-APIをなんとか導入しようと悪戦苦闘が始まりました。

参考にした資料

SP-APIの日本語の資料といえばこちら、Amazonが原文の英語を翻訳したものです。

SellingPartnerApiDeveloperGuide(日本語).md

これ、GitHubです。

知っている人は普通に知っている、
でも自分は恥ずかしながら名前だけしか知りませんでした。
プログラマ御用達のウェブサイト GitHub 。

MWSとの違い

いろいろ読んで試した結論から言うと、MWS開発者というだけではSP-APIは使えません

SP-APIが使えるようになるためには
MWSで言う「アクセスキー、シークレットアクセスキー」の2つの情報ぐらいでは足りず
他にもいくつも取得が必要な情報があります。

これらをするための手順が上で紹介したページなのですが
これがまた、完璧でない。
文章に沿って忠実にやろうとすればするほど、できない、つまづきます。

そしてAmazonセラーセントラルにアプリケーションを登録する必要があります。
アプリはこれから作るのでまだ存在しないアプリを登録するのは変な感じですが
「こういう機能をもったアプリを作ります」という申請だと思ってください。
この登録でアプリが一般公開されるわけではありません。

次にプログラムには

ステップ1.Login with Amazonアクセストークンをリクエストする
ステップ2.出品パートナーAPIのURIを構築する
ステップ3.URIにヘッダーを追加する
ステップ4.リクエストの作成と署名

のプロセスを組み込むことが必要です。

またAmazonサーバからのレスポンスはJSON形式のものが多いということもMWSとの違いです。

多くの人がつまずく、SP-APIを使い始める前の準備

さきほど紹介したSellingPartnerApiDeveloperGuide(日本語).mdを参考にして
出品パートナーAPIアプリケーションの登録をするまでの手順を行うわけですが
このページがわかりにくい。しかも間違っている記述もあります。
ページ内のリンクも切れています。

この手順はプログラムを作っていくうちに何度もすることになったので、
この際正しい手順を自分の忘備録を兼ねてここに書きたいと思います。

セラーセントラルで開発者に登録

まず前提としてセラーセントラルで開発者に登録済みであることが必要です。
まだという人は、まず開発者に登録してください。
ちなみに、誰でも登録できるわけではなく結構ハードル高いです。

AWSアカウントを作る

AWS無料利用枠のページから、「まずは無料で始める」をクリックして、無料のAWSアカウントを取得します。
これは問題なくできるでしょう。
これでAWSマネジメントコンソールというページから、手続きをすることができるようになります。

IAMユーザーを作成する

  1. console.aws.amazon.com/iamでIAMコンソールを開く。

  2. 左側のメニューで、ユーザーをクリック

  3. 「ユーザーを追加」ボタンをクリック

  4. 新しいユーザー名を決めて入力。半角英語。

  5. アクセスの種類で「プログラムによるアクセス」にチェックを入れる

  6. 「グループの作成」ボタンをクリック

  7. 新しいグループ名を決めて、グループ名に入力。半角英語。

  8. ポリシーのフィルタの右横にAdministratorAccessを入力

  9. 下の表でAdministratorAccessにチェックを入れる

  10. 「グループの作成」をクリック

  11. 「次のステップ:タグ」をクリック

  12. 「次のステップ:確認」をクリック

  13. 次のように表示されていることを確認する
    ユーザー名とグループ名には自分が入力した文字が表示される

  14. 「ユーザーの作成」をクリック

  15. アクセスキーIDをコピーして保存する

  16. 「表示」をクリック
    シークレットアクセスキーの下にある「表示」をクリック

  17. シークレットアクセスキーをコピーして保存する
    この時しか表示されないので注意

  18. 「閉じる」をクリック
  19. 左側のメニューで、ユーザーをクリック

  20. 今作ったユーザー名をクリック

  21. ユーザーのARNからアカウントIDの部分をコピー

    たとえば
    arn:aws:iam::123456789012:user/test
    なら
    12桁の数字の部分「12345789012」がアカウントID

IAMポリシーを作成する

  1. 左のメニューで「ポリシー」をクリック

  2. ポリシーを初めて選択する場合は、「管理ポリシーにようこそ」のページが表示されます。「開始する」をクリック
  3. 「ポリシーの作成」をクリック

  4. 「JSON」タブをクリック
  5. コードを置き換える

    {
    "Version": "2012-10-17",
    "Statement": []
    }


    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Action": "execute-api:Invoke",
    "Resource": "arn:aws:execute-api:*:*:*"
    }
    ]
    }

    に置き換える

  6. 「次のステップ:タグ」をクリック

  7. 「次のステップ:確認」をクリック

  8. 「ポリシーの確認」ページで、名前を決めて入力(半角)

  9. 「ポリシーの作成」をクリック

IAMロールを作成する

  1. 左のメニューで「ロール」をクリック

  2. 「ロールの作成」をクリック

  3. 「別のAWSアカウント」をクリック
  4. アカウントIDを入力

    ユーザーを作成したときにコピーしたアカウントID(数字12桁)を入力

  5. 「次のステップ: アクセス権限」をクリック

  6. ポリシーのフィルタに作成したポリシーの名前を入力

  7. ポリシー名の左のチェックボックスにチェック

  8. 「次のステップ:タグ」をクリック

  9. 「次のステップ:確認」をクリック

  10. 「確認」ページで、名前を決めて入力(半角)

  11. 「ロールを作成」をクリック
  12. 左のメニューで「ロール」をクリック

  13. 作成したロールの名前をクリック

  14. ロールARNをコピー

IAMユーザーにAWSセキュリティトークンサービスポリシーを追加

  1. 左側のメニューで、ユーザーをクリック

  2. 今作ったユーザー名をクリック

  3. 「アクセス権限」タブの中にある「インラインポリシーの追加」をクリック

  4. 「サービスの選択」をクリック

  5. STSと入力し、表示されたSTSをクリック

  6. アクションの下にある「アクセスレベル」の「書き込み」の左横の三角マークをクリック

  7. AssumeRole の横にチェックを入れる

  8. 「リソース」の左横の三角マークをクリック

  9. 「ARNの追加」をクリック

  10. 「STS_role の ARN の指定」の欄にロールARNを入力
    すでに値が入力されている場合には、値を削除してから入力

  11. 「追加」をクリック

  12. 「ポリシーの確認」をクリック

  13. 「ポリシーの確認」ページの「名前」に、名前を決めて入力(半角英語)

  14. 「ポリシーの作成」をクリック

アプリケーションを登録する

  1. セラーセントラルのページを表示する
  2. 「アプリとサービス」から「アプリの開発」をクリック
  3. 「新しいアプリクライアントを追加」をクリック
  4. 「アプリ名」に自分で決めた名前を入力
  5. 「APIタイプ」で「SP API」を選択
  6. 「IAM ARN」にロールARNを入力
  7. 「ロール」で使い機能にチェックを入れる
  8. 「保存して終了」をクリック
  9. 作成したアプリ名がある行の右にある「表示」をクリック
  10. LWA認証情報のウィンドウにある「クライアントID」をコピー
  11. LWA認証情報のウィンドウで「クライアント機密情報」をクリック
  12. 表示された情報(クライアントシークレット)をコピー
  13. 作成したアプリ名がある行の右にある「編集」ボタンの右にある下矢印をクリック
  14. 「承認」をクリック
  15. 「リフレッシュトークンを生成」をクリック
  16. 表示されたリフレッシュトークンをコピー

取得した情報のまとめ

ここまでで取得した情報で、SP-APIに必要な情報は次の通りです

  • アクセスキー
  • シークレットアクセスキー
  • ロールARN
  • クライアントID
  • クライアントシークレット
  • リフレッシュトークン

さらに必要な3つの情報

APIにはさらに3つの情報が必要です

  • 日本のエンドポイント
    https://sellingpartnerapi-fe.amazon.com
  • 日本のリージョン
    us-west-2
  • 日本のマーケットプレイスID
    A1VC38T7YXB528

お疲れ様でした!、あとはSP-APIをうまく導入することを願っています

出品パートナーAPIの問い合わせは

MWSでもセラーセントラルでもなく、専用の問い合わせページがあります。

それが「Amazonセリングパートナー開発者サポートにお問い合わせください」です。