2017-09-05 18 views
0

我們有我的工作,下面的工作流程:直接在AWS S3目標桶運行的Java運行

從AWS S3存儲下載數據到工作區:

aws s3 cp --only-show-errors s3://bucket1 

解壓數據

unzip -q "/workspace/folder1/data.zip" -d "/workspace/folder2" 

運行java命令

java -Xmx1024m -jar param1 etc... 

同步歸檔回S3目標水桶

aws s3 sync --include #{archive.location} s3://bucket 

正如你可以看到,從S3存儲下載數據,解壓縮,運行上的數據和複製回S3一些Java操作花費大量的時間和資源。

因此,我們打算直接在s3目標存儲桶中解壓並在那裏運行java操作。是否有可能直接在s3桶中運行java操作?如果是的話,你能否提供一些見解?

回答

0

編號

您不能在S3上運行代碼。

3

它不可能在S3中運行java,但您可以將Java代碼移動到AWS Lambda函數,並且可以在雲中完成所有工作,即不需要下載到本地機器,處理並重新上傳。

如果不知道您的需求細節,我會考慮設置一個S3通知請求,每當新文件獲取PUT到一個特定位置時調用該請求,並調用AWS Lambda函數以獲取新文件的詳細信息,然後讓Lambda將結果輸出到具有結果的不同桶/位置。

我已經做了類似的事情(雖然不是與Java),並已發現它堅如磐石的方式處理文件。

0

S3是一個對象存儲,它不提供任何執行環境。要對文件進行任何修改,您需要下載它,修改並上傳回S3。

如果您需要對文件執行操作,可以使用AWS Elastic File System進行查看,您可以將其安裝到EC2實例並根據需要執行操作。