使用Python使用/签名AWS Product Advertising API的最简单方法是什么?

时间:2018-10-16 03:10:07

标签: api web-services signing amazon-product-api

我一直在用力撞墙,尝试以不同方式正确签署我的请求,以便我可以通过aws服务进行取回价格api调用。

这是我尝试拨打的电话: https://docs.aws.amazon.com/AWSECommerceService/latest/DG/EX_RetrievingPriceInformation.html

过一会儿,我决定最好使用现有模块,所以我尝试使用: https://github.com/DavidMuller/aws-requests-auth

但是,当我尝试将其更改为与“检索价格”请求一起使用时,遇到了一些问题。是否可以重做以下代码,还是应该采取更好的方法?

import sys, os, base64, datetime, hashlib, hmac
import requests
from aws_requests_auth.aws_auth import AWSRequestsAuth

associate_tag = "IMA_associate"
access_key = "SLIGHTLYLESSSECRETKEY"
secret_key = "SUPERSECRETKEY"

t = datetime.datetime.utcnow()
amzdate = t.strftime('%Y%m%dT%H%M%SZ')
datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope

auth = AWSRequestsAuth(aws_access_key=access_key,
                       aws_secret_access_key=secret_key,
                       aws_host='http://webservices.amazon.com/onca/xml',
                       aws_region='us-west-1',
                       aws_service='AWSECommerceService')

endpoint = 'http://webservices.amazon.com/onca/xml' \
    + '?AssociateTag=' + associate_tag \
    + '&AWSAccessKeyId=' + access_key \
    + '&IdType=ASIN' \
    + '&ItemId=B00KOKTZLQ' \
    + '&Operation=ItemLookup' \
    + '&ResponseGroup=Offers' \
    + '&Service=AWSECommerceService' \
    # + '&Signature=' + auth \
    + '&Timestamp=' + str(datestamp)


response = requests.get(endpoint, auth=auth)
print(response.content)

我真的很感谢我能为此提供的任何帮助!仅包括正确方向上的一个点,这有点不合我意。

1 个答案:

答案 0 :(得分:0)

我能够找到一个非常有用的Python模块,可以让我解决上述问题。

https://github.com/yoavaviram/python-amazon-simple-product-api

此模块使进行Amazon api产品调用非常简单。它缺少api提供的一些产品特性,但是将它们添加到项目中已经足够容易了,我将提供所有新信息的公关,因此希望到有人读到它时,它就可以进行访问了。 api提供的所有信息。