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(カンマ区切り)
レスポンス
リクエストに応じた結果が出力されます
コメント