LoginSignup
3
2

More than 5 years have passed since last update.

Product Advertising API (PA-API) に専用のIAMでアクセスする

Last updated at Posted at 2017-07-30

昔まだAWSが出来て間もない時代(かろうじてS3があったくらい)にPA-APIを使ったアプリを作っていたのですが、最近またPA-APIを使おうかなと思って調べたところ、未だにPA-APIを使うアプリでは認証にアマゾンのルートアカウントのアクセスキーとシークレットを使えという記事が出てきました。

PA-API以外に使うものがあんまりなかった時代ならいざしらず、AWSがこんなに使われてる現状でも未だにPA-APIにそれ用の権限とか存在しないのか…??と思ってよくよく調べてみると、最近それ用のIAMポリシーができたよう(いつできたのかは不明)なので、それを設定して使うことにしました。

これがなかったら、さすがにAWSをバリバリ使ってるアカウントのルートアカウントをPA-APIのアプリに使いたくなかったので、専用のAWSアカウントを作るところでした。

これはなにか?

PA-API用ポリシーを作って、PA-API用のIAMユーザに紐付ける手順、及びそのユーザのアクセスキー及び秘密鍵を使ってPA-APIから値を取得できるかの確認。

ポリシーの作成

まずはAWSのWebコンソールからPA-API専用のポリシーを作ります。

Pasted_Image_2017_07_30_18_03.png

「独自のポリシーを作成」を選択します。

Pasted_Image_2017_07_30_18_04.png

PA-APIに対するFullAccess権限を設定したポリシーにします。ポリシー名は適当なものを。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ProductAdvertisingAPI:*",
            "Resource": "*"
        }
    ]
}

image.png

念の為ポリシーの検証をしておいて、問題なければポリシーの作成です。

PA-APIアクセス用ユーザの作成

次に上記で作成したポリシーを紐付けるユーザを作成しましょう。

Pasted_Image_2017_07_30_18_13.png

適当な名前をつけて「プログラムによるアクセス」にチェックを入れます。

image.png

「既存のポリシーを直接アタッチ」を選んで、先程作成したPA-API用のポリシーにチェックを入れます。

image.png

次の画面で確認して、問題なければ更に次の画面でcredentials.csvをダウンロードしておきましょう。

実際にアクセス可能な確認

取得したアクセスキーと秘密鍵が実際にPA-APIへのアクセスに使えるか念の為チェックしておきましょう。

rubyだとamazon-ecsというgemがPA-APIにアクセスするのによく使われているようです。

associate_tagAWS_access_key_idAWS_secret_keyのところは自分のものに置き換えてください。

require 'amazon/ecs'

Amazon::Ecs.options = {
  associate_tag: 'xxxxxxxxxxxxxx',
  AWS_access_key_id: 'xxxxxxxxxxxxxxxxxx',
  AWS_secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  country: :jp
}

# Nintendo SwitchのASINを指定してみます
res = Amazon::Ecs.item_lookup('B01NCXFWIZ', response_group: 'Small')

p res.items.map {|item| item.get('ItemAttributes/Title') }
# => ["Nintendo Switch Joy-Con (L) ネオンブルー/ (R) ネオンレッド"]

OK、ちゃんと取れてるようですね。

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2