2016-03-06 203 views
0

我想使用AWS S3和Lambda實施以下方案。將文件上傳到S3並觸發lambda的最佳做法

用戶拍攝來自手機的照片,將描述,位置和更多屬性添加爲單獨的元數據。使用元數據作爲文件內部元數據將圖像文件上傳到S3。根據that鏈接,我可以通過將「x-amz-meta-」作爲關鍵字添加到ObjectMetadata的鍵值對來完成。

我被設法調用lambda表達式,每次在S3存儲桶中創建一個文件,但是在來自Lambda調用方法的S3Event中,我沒有收到我在ObjectMetadata中放置的元數據。在上傳過程

代碼示例:

PutObjectRequest por = new PutObjectRequest(BUCKET_NAME, KEY_NAME, file); 
ObjectMetadata metadata = new ObjectMetadata(); 
metadata.addUserMetadata("x-amz-meta-xxxxx", "test123"); 
por.setMetadata(metadata); 
s3client.putObject(por); 

我希望我提供足夠的信息

回答

1

AWS建議存儲在S3上,文件對DynamoDB元數據文件。利用這種方法,通過元數據執行搜索變得簡單並且成本有效。請記住,根據您爲每個API調用支付的S3定價模式。

+0

感謝您的回覆。不幸的是,這不能回答我的問題。使用您的解決方案,客戶端需要執行2個Rest api調用,而我正在尋求只有1個api調用的解決方案 - 將s3與附加的客戶端元數據 - 從那裏調用帶有S3Event的lambda表達式,幷包含元數據。 – Nativ

+0

的確如此。 S3Event不包含文件元數據。你必須在lambda中調用GET(http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)或HEAD(http://docs.aws.amazon.com/AmazonS3 /latest/API/RESTObjectHEAD.html)方法來獲取元數據。 –