对于小于 5Mb 的小文件,通过预签名 URL 上传到 S3 工作正常。当我尝试上传比这更大的东西时,我似乎400 Bad Request
从 S3收到RequestTimeout
了错误的响应。
我可以使用 curl 重新创建它:
# Create a test file:
mkfile -n 20m ./testfile
# Get the presigned URL
curl -XPOST http://localhost:3000/uploads -d "filename=testdata"
# Upload to S3
curl -H "Content-Type: binary/octet-stream" -XPUT -vvv -T testfile "<Presigned URL>"
签名代码如下所示:
@presigned_url ||= Aws::S3::Presigner.new.presigned_url(
:put_object,
bucket: ENV['AWS_BUCKET'],
key: key,
acl: 'private',
expires_in: 3600,
content_type: 'binary/octet-stream'
)
请注意,对于小于 5Mb 的文件,这一切都可以正常工作,随着文件大小的增加,故障会更频繁地发生。有没有人看到这些问题并解决了它们?