【发布时间】:2018-08-05 17:34:22
【问题描述】:
我想为我的存储桶中的对象创建一个预签名的 url。我使用以下 python 代码:
client = boto3.client(
's3',
aws_access_key_id=os.environ['AWS_ACCESS_KEY'],
aws_secret_access_key=os.environ['AWS_SECRETS_KEY'],
config=botocore.client.Config(signature_version='s3v4'),
region_name='eu-central-1'
)
url = client.generate_presigned_url(
ClientMethod='get_object',
ExpiresIn=60,
Params={
'Bucket': MYBUCKET,
'Key': MYKEY
})
然后我将生成的 URL 发送到我的前端。在客户端上,我将使用生成的链接创建一个标签,并在其上使用 click() 方法。这在其他项目中运行良好,但在这里我只收到错误:
The request signature we calculated does not match the signature you provided. Check your key and signing method.
这很奇怪。用户应该拥有所有必要的权利。因为列出我存储桶中的所有文件都可以正常工作。
有人可以指出正确的方向,为什么这不起作用?
编辑
如果有帮助,我会在前端使用 next.js。
【问题讨论】:
标签: python amazon-web-services amazon-s3 boto3