2014-09-23 22 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