我對AWS Lambda相對來說比較新,所以也許這是微不足道的,但到目前爲止我還沒有弄清楚。 我想返回JSON數據,就像我可以將它作爲回調函數返回以響應API網關請求一樣。 我遇到的問題是我想處理用戶上傳的圖像,並以JSON格式將處理結果返回給用戶。 我知道我可以創建響應S3上傳(觸發器)的Lambda函數,但我無法以這種方式向用戶返回數據。響應S3上傳返回JSON
2
A
回答
2
您可以將其作爲單個同步操作來實現。如果圖像少於10MB,那麼您應該可以創建Lambda函數來接受圖像,將其上傳到S3,處理它並將數據返回給用戶。這也假定您可以上傳到S3並在29秒內處理圖像,這是API網關超時請求之前的最長時間。
如果這不適合你,那麼你將切換到異步處理。您可以擁有一個響應S3上傳事件的Lambda函數,並執行處理並將結果寫入DynamoDB,RDS或Aurora中的表中。然後,您可以公開一個API網關方法來檢查完成的處理並獲得結果。客戶端然後必須輪詢這個API網關方法。
1
我會建議替代辦法:
- let the browser do the upload to S3直接使用javascript
- subscribe your lambda function to S3 events在桶
- 讓你的lambda函數的縮略圖圖像並保存生成的縮略圖回S3基於命名約定,例如如果你的圖像是
someimage.jpg
你可以將它保存爲someimage-thumb.jpg
。 - 上傳完成後,讓javascript客戶端循環查詢S3存儲桶,直到縮略圖存在並顯示。
這種方法會導致上傳更快,用戶體驗更好,應該是非常可靠的。
============================================== ===
如果你確實真的想使用API網關,這是可能的,因爲二進制數據是now supported。您可以將函數中的數據以二進制或base64編碼方式接收。因爲我們要介紹的一個瓶頸
- 時間上傳速度會變慢:你可以與包括編碼處理後的圖像的Base64和一些元數據的響應回覆,例如:
{ "thumbnail": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wlseKgAAAABJRU5ErkJggg==", "metadataKey1": "some data", "metadataKey2": "some other data" }
這裏的缺點。
- 需要進行更多的處理,特別是如果必須將大圖像轉換爲base64或從base64轉換大圖像。
- 瀏覽器將更難以渲染處理後的圖像。
相關問題
- 1. s3文件上傳不返回響應
- 2. 返回JSON響應
- 3. 返回JSON響應
- 4. S3響應403上傳
- 5. 返回SQS響應,JSON
- 6. JSON中的Amazon S3響應?
- 7. 在PHP中返回HTML JSON響應
- 8. 返回多個模型的JSON響應
- 9. 以JSON格式返回Web API響應
- 10. 從laravel控制器返回JSON響應
- 11. HttpPost響應不會返回json對象
- 12. jQuery AJAX JSON響應返回鍵「d」
- 13. Laravel JSON()響應返回值的兩倍
- 14. JSON響應總是返回true
- 15. SonataUserBundle Api響應返回空JSON
- 16. fineuploader json響應不在Firefox中返回
- 17. json對象由http響應返回
- 18. JSON返回null響應與jQuery $ .ajax
- 19. 以json格式返回solr響應
- 20. Golang發佈返回json響應
- 21. iron-ajax響應爲php json響應返回null
- 22. MediaMetadataRetriever在S3上返回null
- 23. 鋰返回JSON響應接受:應用/ JSON
- 24. Grails文件上傳JSON響應
- 25. JSON在FireFox和Safari(Windows Vista)上返回空響應
- 26. 返回文件或JSON響應的url上的AJAX?
- 27. 返回&文件上傳支持 - JSON
- 28. Node.js:文件上傳API和JSON返回
- 29. jQuery .submit()上傳表單顯示返回Slim PHP的響應
- 30. jQuery插件'uploadify' - 從上傳腳本返回響應的方式?
您需要包含代碼示例。 –