2017-08-16 99 views
0

我正在構建一個應用程序,它的一個方面是用戶可以將圖像與一些csv文件一起導出。數據處理工作流程:aws lambda或ec2實例?

此應用程序的此功能的使用將是間歇性的。換句話說,在使用之間可能會有大量的時間(幾個月),然後在很長的一段時間內會遇到很大的困難。

目前我已經實現了使用在ec2實例上運行的python腳本。 python腳本爲包含導出細節的json調查一個sqs隊列。導出json包含一個存儲在s3中的圖像數組,該數組可能包含1到5000個圖像,可能更多。

該腳本基本上執行以下操作:

  • 輪詢SQS出口消息
  • 下載S3圖像
  • 調整大小(ImageMagick的) /重命名基於數據的圖像從出口消息
  • 根據來自輸出消息的數據在目錄中分組圖像
  • 創建csv基於從出口消息
  • 數據文件創建一個.zip存檔
  • 名爲.zip上傳到S3

請問這個工作流程是AWS拉姆達考慮使用的間歇性更好?

這個工作流程可以使用lambda來完成嗎?

重新調整5k圖像的時間密集度過於lambda?

回答

2

你會使用AWS lambda函數遇到的主要問題是:

  • 每個功能可以爲最多5分鐘
  • 每個函數只有磁盤空間500MB
  • 功能運行不能由Amazon SQS隊列中的消息觸發(它們應該直接由將消息放入隊列的進程觸發)

它i很可能你的應用會碰到這些限制之一。您可以通過鏈接功能來解決計時問題,但不建議這樣做。

如果您並不需要立即處理這些請求,一個替代設計可能是:

  • 創建一個運行應用程序的自動縮放組,最低爲零實例和適當的最大值(甚至可能只是一個實例)
  • 配置縮放策略在隊列中有消息時伸縮並且在隊列中沒有消息時伸縮
  • 使用現貨實例省錢(剛纔設置的價格按需價格)
+0

現貨實例是一個偉大的電話,你也可以考慮SWF(https://aws.amazon.com/swf /),但是鑑於Sam已經獲得了在服務器上運行的Python腳本 - 現場實例就是其中之一。 –