Ах!Все получилось.
У вас была случайная точка с запятой.Кроме того, b64encode
требует строки, а не словаря, поэтому просто поместите объект в кавычки.
import base64
import hmac, hashlib
AWS_SECRET_ACCESS_KEY = '<your-secret-access-key>'
policy_document = '{"expiration": "2019-01-01T00:00:00Z", "conditions": [ {"bucket": "report-generation1"}, ["starts-with", "$key", ""], {"acl": "private"}, {"success_action_redirect": "localhost/"}, ["starts-with", "$Content-Type", ""], ["content-length-range", 0, 1048576]]}'
policy = base64.b64encode(policy_document)
signature = base64.b64encode(hmac.new(AWS_SECRET_ACCESS_KEY, policy, hashlib.sha1).digest())
Также обратите внимание, что вы указали Access Key
вместо Secret Access Key
.