Я пытаюсь сделать API-вызов сервиса Amazon SimpleDB с Python.В качестве примера я использую самый простой запрос, ListDomains
.Однако независимо от того, что я пытаюсь сделать, ответ всегда будет таким: «Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи».
Это строка, которую я подписываю (согласно документации здесь ):
GET
https://sdb.amazonaws.com/
/
AWSAccessKeyId=<redacted>&Action=ListDomains&SignatureMethod=HmacSHA1&SignatureVersion=2&Timestamp=2011-04-19T18%3A50%3A43&Version=2009-04-15
Я подписываю его следующим кодом:
import base64,hashlib,hmac,time
# Sign the request
signature = hmac.new(
key=AWS_SECRET_ACCESS_KEY,
msg=string_to_sign,
digestmod=hashlib.sha1).digest()
# Base64 encode the signature
signature = base64.encodestring( signature )
Я пробовал это и с HmacSHA256, и с HmacSHA1.Ничто не похоже на работу.Что я делаю не так?