gpt4 book ai didi

python - boto3 签名的 url 导致 SignatureDoesNotMatch

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:53 25 4
gpt4 key购买 nike

我的代码已成功将文档上传到正确的存储桶中。我可以登录并查看 AWS S3 上的存储桶中的文档。当我尝试使用 boto3 中的generate_signed_url 方法来获取这些文档的 URL,然后将其发送给用户以访问该文档时,我收到一条 SignatureDoesNotMatch 消息,其中显示“我们计算的请求签名与签名不匹配”您提供的。检查您的 key 和签名方法。”

当我保存对象时(通过登录 AWS 并手动下载文件来验证它是否正常工作),我使用:

  s3 = boto3.client('s3', region_name='us-east-2', aws_access_key_id='XXXX', aws_secret_access_key='XXXX', config=Config(signature_version='s3v4'))

s3.put_object(Bucket=self.bucket_name,Key=path, Body=temp_file.getvalue(),ACL='public-read')

然后,当我尝试获取 URL 时,我使用:

  s3 = boto3.client('s3', region_name='us-east-2', aws_access_key_id='XXXX', aws_secret_access_key='XXXX', config=Config(signature_version='s3v4'))

url = s3.generate_presigned_url(
'put_object', Params={
'Bucket':self.pdffile_storage_bucket_name,
'Key':self.pdffile_url
},
ExpiresIn=604799,
)

我在网上看到很多用户都在谈论确保您的 AWS 访问 key 不包含任何特殊字符。我这样做了,但仍然遇到同样的问题。

最佳答案

我尝试了来自许多不同地方的许多解决方案。没有一个对我有用。然后我在 GitHub 上找到了一个对我有用的解决方案。 Here是原来的解决方案,直接复制粘贴他的解决方案即可。

s3 = boto3.client('s3', region_name='us-east-2',aws_access_key_id='XXXX', aws_secret_access_key='XXXX',config=Config(signature_version='s3v4'),endpoint_url='https://s3.us-east-2.amazonaws.com')

关于python - boto3 签名的 url 导致 SignatureDoesNotMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47764171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com