我正在使用 curl 将大文件(> 5GB)上传到S3上的签名网址。
卷曲:
curl --request PUT \
--url 'https://s3.amazonaws.com/my-bucket/file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=EMIRJN3IU7FNIXRK5JKQ%2F20170906%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20170906T070720Z&X-Amz-Expires=100&X-Amz-SignedHeaders=content-type%3Bhost&x-amz-acl=public-read&X-Amz-Signature=431a62c997c8202512996244b0267e83cb52c0c9d306376e15f43e22c07938f9' \
--header 'content-type: application/x-zip-compressed' \
--upload-file '/tmp/file.zip'
响应:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>EntityTooLarge</Code>
<Message>Your proposed upload exceeds the maximum allowed size</Message>
<ProposedSize>7192576000</ProposedSize>
<MaxSizeAllowed>5368709120</MaxSizeAllowed>
<RequestId>61803227A539E1F6</RequestId>
<HostId>75RCx1xBVCzVeBbof6GZRN0fAY9/tVTDUaavdXXXkNMVWPWLLhkvZx--MxjaalxlWuiuAg6qCA=</HostId>
</Error>
这是由于AWS S3 forcing multipart upload for files larger than 5GB。
如何使用curl在S3上执行分段上传到签名URL?
如果那是不可能的,还有其他工具吗?请注意,这是公开上传,即AWS CLI不是一个选项,因为运行这些上传的用户没有我们的凭据。