2014-09-23 25 views
15

我知道用这种方法限制对象的上传大小:http://doc.s3.amazonaws.com/proposals/post.html#Limiting_Uploaded_Content限制大小的对象,而上传到亚马逊S3使用预签名URL

,但我想知道如何可以做到,而产生使用服务器端的S3 SDK作为IAM用户的预签名url。

这个URL从SDK在其参数没有这样的选择:在这个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 Pre-signed URL content-length,它不是我所期待对于。

+0

您是否可以找出限制预签名URL的文件大小的解决方案?我在同一条船上。 – 2015-07-09 23:33:49

+0

不,我结束了使用HTTP POST的S3策略。 - 链接:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html – Koder 2015-07-12 15:16:43

+0

@Koder最终是否使用了预签名URL + HTTP Post策略的组合?如果是的话,你可以把它作为答案吗?对我有帮助! – Nikhil 2015-07-22 07:59:00

回答

2

您可能无法限制事件前的内容上传大小,特别是考虑上传POSTMulti-Part。您可以使用AWS Lambda创建一个事后解决方案。您可以设置Lambda函数以接收来自S3存储桶的通知,让函数检查对象大小并使函数删除对象或执行其他操作。

以下是关于 Handling Amazon S3 Events Using the AWS Lambda的一些文档。

3

V4签名协议提供了在签名中包含任意头的选项。请参阅: http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html 因此,如果您事先知道确切的Content-Length,则可以将其包含在签名的URL中。基于对CURL的一些实验,如果发送的Content-Length头中指定的内容超过了指定的数目,S3将截断该文件。以下是签名中带有多个标头的示例V4签名 http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html