直接在AWS S3目标存储桶上运行java操作

时间:2017-09-05 13:27:26

标签: amazon-web-services amazon-s3

我的工作中有以下工作流程:

将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存储桶下载数据,解压缩,对数据运行一些Java操作并复制回s3会花费大量时间和资源。

因此,我们计划直接在s3目标存储桶中解压缩并在那里运行java操作。是否可以直接在s3存储桶中运行java操作?如果是的话,你能提供一些见解吗?

3 个答案:

答案 0 :(得分:3)

无法在S3'中运行java'但您可以做的是将您的Java代码移动到AWS Lambda函数,并且所有工作都可以在云中完成' #39;,即无需下载到本地计算机,处理并重新上传。

在不知道您的要求的详细信息的情况下,我会考虑设置一个S3通知请求,每当新文件获取PUT到特定位置时调用该请求,以及使用该新文件的详细信息调用的AWS Lambda函数,然后让Lambda将结果输出到带有结果的不同桶/位置。

我做过类似的事情(虽然不是用java),并且发现它有坚实的处理文件的方式。

答案 1 :(得分:0)

没有

您无法在S3上运行代码。

答案 2 :(得分:0)

S3是一个对象存储,它不提供任何执行环境。要对文件进行任何修改,您需要下载,修改并上传回S3。

如果您需要对文件进行操作,可以使用可以挂载到EC2实例的AWS Elastic File System并根据需要进行操作。