2

私はAPIドキュメントの指示に正確に従っています.いくつかの欲求不満の後、最終的にhttp://docs.amazonwebservices.com/AWSECommerceService/2011-08-01/DG/rest-signatureの例から直接何かをまとめました. html

いくつかのマシンでこの python スクリプトを試してみましたが、すべてのマシンで同じ結果が得られました。

import hmac
from base64 import b64encode
from hashlib import sha256

secret_key = '1234567890'

to_sign = """GET
webservices.amazon.com
/onca/xml
AWSAccessKeyId=AKIAI44QH8DHBEXAMPLE&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06"""

print b64encode(hmac.new(secret_key, to_sign, sha256).digest())

指示には、このリクエストとこのキーを使用した署名はあると書かれていますがNace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=O6UTkH+m4zAQUvB+WXUZJeA8bZcKAdkc4crKgHtbc6s=

(誰かが何かを言う前に: サンプル ページは 65 文字で折り返されたリクエストを表示します。私は既にそれを試しました。これは解決策を提供せず、署名作成の手順には記載されていません。)


編集:答えが見つかりました。以下を参照してください。

4

2 に答える 2

2

まあ、それを見てください.ドキュメントは間違っていました。

この質問の古い(ほぼ)複製に出くわしました:pythonで文字列+秘密鍵を使用してSHAハッシュを計算する

サンプル リクエスト ページでAWSAccessKeyId値が から00000000000000000000に変更されたようです。AKIAI44QH8DHBEXAMPLE

スクリプトでこれを更新すると、予想されるキーが出力されます。Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=

import hmac
from base64 import b64encode
from hashlib import sha256

secret_key = '1234567890'

to_sign = """GET
webservices.amazon.com
/onca/xml
AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06"""

print b64encode(hmac.new(secret_key, to_sign, sha256).digest())
于 2012-02-27T22:44:59.357 に答える
1

Bottlenose ライブラリ ( https://github.com/dlo/bottlenose ) をチェックしてみてください。これにより、AWS 製品 API をより使いやすく処理できることがわかりました。

于 2012-02-25T06:46:13.343 に答える