Kod*_*der 28 amazon-s3 amazon-web-services
我知道使用这种方法限制对象的上传大小:http://doc.s3.amazonaws.com/proposals/post.html#Limiting_Uploaded_Content
但我想知道如何在服务器端使用S3 SDK作为IAM用户生成预签名URL时如何完成.
来自SDK的此Url在其参数中没有此选项:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
在这里:http: //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property
请注意:我已经知道这个答案:AWS S3预先签名的URL内容长度,它不是我想要的.
V4签名协议提供了在签名中包含任意标头的选项.请参阅:http: //docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html 因此,如果您事先知道确切的内容长度,则可以将其包含在签名的URL中.根据CURL的一些实验,如果您发送的内容超过Content-Length标头中指定的数量,S3将截断该文件.以下是签名中带有多个标题的示例V4签名 http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html
对于最终在此线程上的任何其他漫游者 - 如果您在从客户端发送请求时设置 Content-Length 属性,则有几种可能性:
Content-Length 自动计算,S3 每个文件最多可存储 5GB
Content-Length 由您的客户端手动设置,这意味着将发生以下三种情况之一:
在任何情况下,恶意用户都可以覆盖您的客户端并手动发送带有他们想要的任何标头的 HTTP 请求,包括比您预期大得多的内容长度。签名 URL 并不能防止这种情况发生!唯一的方法是设置 POST 策略。官方文档在这里:https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html
或者,您可以使用 Lambda 自动删除大于预期的文件。
您可能无法事前限制内容上传大小,特别是考虑POST到Multi-Part上传。您可以用来AWS Lambda创建事后解决方案。您可以设置一个Lambda函数来接收来自S3存储桶的通知,让该函数检查对象大小并让该函数删除对象或执行其他操作。
以下是有关 使用 AWS Lambda 处理 Amazon S3 事件的一些文档。
| 归档时间: |
|
| 查看次数: |
6564 次 |
| 最近记录: |