我知道使用此方法限制对象的上传大小: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 Pre-signed URL content-length并不是我想要的 .
2 回答
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
您可能无法事先限制内容上传大小,尤其是考虑
POST
和Multi-Part
上传 . 您可以使用AWS Lambda
创建事后解决方案 . 您可以设置Lambda
函数以接收来自S3
存储桶的通知,让函数检查对象大小并让函数删除对象或执行其他操作 .这是Handling Amazon S3 Events Using the AWS Lambda的一些文档 .