gpt4 book ai didi

amazon-web-services - 生成预签名 URL 以上传到 S3 存储桶

转载 作者:行者123 更新时间:2023-12-05 00:59:51 26 4
gpt4 key购买 nike

我正在尝试为 AWS 上的 S3 存储桶生成预签名 URL,以将文件上传到这样的位置:

$ aws s3 presign s3://mybucket/somefolder/

然后我使用该 URL 上传文件:

$ curl "https://mybucket.s3.amazonaws.com/somefolder/?AWSAccessKeyId=***&Signature=***&Expires=***"  --upload-file "./file"

然后它打印出一个 XML 错误:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<AWSAccessKeyId>***********</AWSAccessKeyId>
<StringToSign>PUT


************
/mybucket/somefolder/</StringToSign>
<SignatureProvided>**************</SignatureProvided>
<StringToSignBytes>**************</StringToSignBytes>
<RequestId>************</RequestId>
<HostId>************</HostId>
</Error>

我做错了什么?

[更新]

好的,所以我必须在预签名 URL 中指定对象名称。所以我做到了,但我仍然面临同样的错误消息:

$ aws s3 presign s3://mybucket/someobject

然后:

$ curl "https://mybucket.s3.amazonaws.com/someobject?AWSAccessKeyId=***&Signature=***&Expires=***"  --upload-file "./file"

我会得到与以前完全相同的错误。为了确保这不是权限问题,我这样进行了测试:

$ aws s3 cp ./file s://mybucket/

文件被复制了!有什么建议吗?

[更新]

我什至使用存储桶中实际存在的对象进行了测试,并成功下载了它。但我仍然无法写入对象,只能读取。

最佳答案

看起来 cli 命令 aws s3 presign 仅适用于 GetObject。参数 'get_object' 硬编码在 source code 中. (见第 671 行)

您可以使用其他 SDK(例如 boto3)为 PutObject 创建预签名 URL。确保设置客户端方法 'put_object'

关于amazon-web-services - 生成预签名 URL 以上传到 S3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51996715/

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