簡體   English   中英

為Amazon S3生成具有最大內容長度的預簽名PUT URL

[英]Generating a pre-signed PUT url for Amazon S3 with a maximum content-length

我正在嘗試生成客戶端可以用來將圖像上傳到特定S3存儲桶的預簽名URL。 我已經成功生成了對GET文件的請求,如下所示:

GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, filename);
urlRequest.setMethod(method);
urlRequest.setExpiration(expiration);

其中expiration和method分別是Date和HttpMethod對象。

現在,我試圖創建一個URL,以允許用戶放置文件,但是我不知道如何設置最大內容長度。 我確實找到了有關POST政策的信息,但是我更喜歡在這里使用PUT-我也想避免構造JSON,盡管這似乎不太可能。

最后,替代的答案可能是將圖像上傳從API網關傳遞到Lambda的某種方法,因此我可以在驗證文件類型和大小后將其從Lambda上傳到S3(這不理想)。

雖然我沒有設法限制上傳時的文件大小,但最終創建了一個Lambda函數,該函數在上傳到臨時存儲區時被激活。 該函數具有如下所示的簽名

public static void checkUpload(S3EventNotification event) {

(這是值得注意的,因為我在網上找到的所有指南都引用了似乎不再存在的S3Event類)

該函數提取文件的元數據(而不是文件本身,因為這可能算作大量下載),並檢查文件大小。 如果可以接受,它將下載文件,然后將其上傳到目標存儲桶。 如果沒有,它只是刪除文件。

這遠非理想,因為不符合條件的上載似乎可以正常工作,但隨后根本就不會出現(因為S3會在上載時發出200狀態代碼,而不關心Lambda的響應是什么)。

這實際上是一種解決方法,而不是解決方案,所以我不會接受這個答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM