Amazon SP-API の導入メモ Postmanで接続確認

システム部

AWSの設定を終えたら接続確認です。
PostmanというAmazonの署名を生成してくれるツールを使って確認する方法を紹介します。


Using Postman for Selling Partner API models

確認手順

アクセストークン取得

TOKENエンドポイント (https://api.amazon.com/auth/o2/token) に接続して、アクセストークンを取得します。
POSTメソッドのため、リクエストボディにパラメタを指定します。

リクエスト

Authタブ

  • Type のプルダウン 「No Auth」 を選択

Bodyタブ

  • URL:
    https://api.amazon.com/auth/o2/token
  • メソッド: (URLの左のプルダウン)
    POST” を選択
  • Body:
    grant_type: “refresh_token” を指定
    refresh_token: << リフレッシュトークン >>
      セラーセントラルでアプリ承認時に発行される
    client_id: << アプリのクライアントID >>

      セラーセントラルの「LWA認証情報」で確認可
    client_secret: <<アプリのクライアント機密情報>>

      セラーセントラルの 「LWA認証情報」で確認

レスポンス

アクセストークン

access_token”: アクセストークン

例)

{
“access_token”: “Atza|*****”,

“refresh_token”: “Atzr|*****”‘

“token_type”: “bearer”,

“expires_in”: 3600

}

STS AssumeRole で AccessKeyID、SecretAccessKeyを取得

セキュリティトークンサービスに対してAssumeRoleのリクエストを行い、Roleの認証情報を取得します。
ここで取得した認証情報(AccessKeyId、SecretAccessKey)は、SP-API実行時のAccessKey、SecretKeyとして指定します。

リクエスト

Paramsタブ

  • Version: “2011-06-15” を指定
  • Action: “AssumeRole” を指定
  • RoleSessionName: 適当な名称を指定
  • Role ARN: << RoleのARN >>
  • Duration Seconds: “3600”を指定

Authタブ

  • Typeのプルダウン: AWS Signature を選択
  • AccessKey: IAMユーザのアクセスキー
  • SecretKey: IAM ユーザのシークレットアクセスキー
  • AWS Region: AWSリージョン(us-east-1など)
  • Service Name: “sts” を指定
  • Session Token: 空白

レスポンス

AccessKeyId: SP-API実行時、AccessKeyに指定します

SecretAccessKey: SP-API実行時、SecretKeyに指定します

SessionToken: SP-API実行時SessionTokenに指定します

Orders Githubより取得したテンプレートをインポート

Githubのselling-partner-api-modelsを開き、左のサイドバーから実行したいモデルを選びます。
(今回はOrdersを実行したかったため、Orders-api-model のOrdersV0.jsonを選びました)

選んだモデルをjson形式でダウンロードして保存します。

Postmanのサイドメニュー Collections を選択して「Import」ボタンを押し、先程ダウンロードしたjsonファイルを選択します。

表示されるダイアログボックスで「Postman Collection」を選択して「Import」ボタンを押します。

SP-API 実行

いよいよSP-APIにリクエストを発行します。
ここで注意するのは、AccessKey、SecretKeyには、IAM ユーザの AccessKey、SecretKeyではなく、STS Assume Roleで取得した AccessKeyId、SecretAccessKeyを指定することです。(このことに気づかずにIAMユーザのAccessKey、SecretKeyを指定していたため403エラーが出続け、膨大な時間を費やしてしまいました)

リクエスト

Authタブ

  • AccessKey: STS AssumeRoleで取得したAccessKeyID
  • SecretKey: 同じくSTS AssumeRoleのSecretAccessKey
  • AWS Region: AWSリージョン (us-east-1)
  • Service Name: “execute-api” を指定
  • Session Token: STS AssumeRoleで取得した SessionToken (空白でも実行可能なようです)

Headersタブ

  • Accept: “application/json”を指定
  • x-amz-access-token: アクセストークン取得 で取得したAccessToken

Paramsタブ

ここには呼び出すリクエストに応じたパラメタを設定します

Ordersの例だと

  • MarketPlaceIds: マーケットプレイスID(カンマ区切り)

レスポンス

リクエストに応じた結果が出力されます

コメント