Python S3上传签名不匹配

2024-05-23 20:10:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用boto3生成一个用于将文件上传到s3的签名。在

我得到了一个错误,我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。

这就是我到目前为止所做的。在

policy_document =  {'expiration': '2017-07-29T07:51:16.010Z', 'conditions': [{'acl': 'public-read'}, {'bucket': 'testinstantrad'}, {'Content-Type': 'application/pdf'}, {'success_action_status': '200'}, {'key': 'web_uploads/3bda0d30-a556-4347-973b-ae21957d808f-Amendments.pdf'}, {'x-amz-meta-qqfilename': 'Amendments.pdf'}, ['content-length-range', '0', '5000000']]}

policy = base64.b64encode(json.dumps(policy_document).encode("utf-8"))
signature= base64.b64encode(hmac.new(b'AWS_SECRET_KEY', json.dumps(policy_document).encode(), hashlib.sha1).digest("utf-8"))

response_payload = json.dumps({'policy' : policy, 'signature' : signature})

有关以下错误的详细信息:

已收到正文为的响应状态403: SignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。检查你的钥匙并签字方法:AKAJ5AEA2H4Y4C4R4QB此外,还介绍了一种新型的计量器具,该种新型计量器具的计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量、计量2odatanjnjns00zti3lwi4m2数量W5KWW5KWWWW5KWWWW5KWWW5KWWW5KWWW5KWWW5KWWW5KWWW5KWWW5KWWW5KWWWW5KWWWWKWWWWKWWWKWWWKWWWWKWWWWWWKWWWWKWWWKWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW44 63 75 4传真54 59 35 57 69 49 7349 43 4a 6a 62 32 35 6b 61 58 52 70 62 32 35 7a 49 6a 6f 67 57 33 73 69 59 57 E 73 49 6a 6f 67 49 6e 42 31 59 6d 78 70 59 79 79 5a 57 46 6b 49 6e 30 73 49 48 73 69 59 6e 56 6a 61 32 56 30 49 6a 6 F 67 49 6e 52 6 C 63 33 52 70 62 6e 4e 30 59 35 30 63 6d 46 6b 49 6e 30 73 49 48 73 69 51 32 39 75 49 64 56 75 64 43 31 55 65 58 C 49 6a 6f 6749 6d 46 77 63 47 78 70 59 32 46 30 61 57 39 75 4c 33 42 6b 5a 69 4a 39 4c 43 42 37 49 6e 4e 31 59 32 E 6c 63 33 4e 66 59 57 4e 30 61 57 39 39 75 58 33 4e 30 59 58 52 31 63 79 49 36 43 49 49 49 4 D 44 69 66 77 77 67 65 79 4a 72 5a 58 6b 69 4f 69 41 69 64 32 56 58 33 56 77 62 47 39 68 5a 48 4d 76 4e 54 40 E 54 59 32 4f 44 41 74 E 6a 4e 6a4e 53 30 30 5a 54 49 33 4c 57 49 34 4d 32 51 74 4d 54 45 59 54 49 32 4e 54 4d 31 5a 54 52 6a 4c 55 46 74 5a 57 35 6b 62 57 56 75 64 48 4d 75 63 47 52 6d 49 6e 30 73 49 48 73 69 65 43 31 68 62 6f 74 62 56 30 59 53 78 57 5a 70 62 47 56 75 59 57 C 49 6a 6f 67 49 6b 46 74 5a 57 35 6b 62 57 56 75 64 48 4d 75 63 47 52 6d 49 6e 30 7349 46 73 69 59 32 39 75 64 47 56 75 64 43 31 73 5a 57 35 6e 64 47 67 67 63 6 D 46 75 5a 32 55 69 4c 43 41 69 4d 43 49 73 49 43 49 49 4d 44 41 77 4d 44 41 77 49 6c 31 64 66 51 3d 3d 2746B920FF32C5D0AFRRGGLQJRIHHEMTLBF/MQVSXX3ARYUJ87OQBIVKIAK7HCPM6E9QYAWUGP0RGT3CDERHPJOSJC=


Tags: 方法jsonpdf错误policydocumentutfencode
1条回答
网友
1楼 · 发布于 2024-05-23 20:10:29

我认为这可能是因为策略需要进行base64编码。在

这是我一直在使用的一些代码。你会看到细微的区别:

policy_document = '{"expiration": "2018-01-01T00:00:00Z", "conditions": [ {"bucket": "my-bucket"}, ["starts-with", "$key", "uploads/"], {"acl": "private"}, {"success_action_redirect": "http://my-bucket/ok.html"}, ["content-length-range", 0, 1048000] ] }'

AWS_SECRET_ACCESS_KEY = "XXX"

policy = base64.b64encode(policy_document)

signature = base64.b64encode(hmac.new(AWS_SECRET_ACCESS_KEY, policy, hashlib.sha1).digest())

My policy_document已经是一个字符串,因此缺少json.dumps(),但它在被用于哈希之前经过{}。在

相关问题 更多 >