【问题标题】:Running java operation directly on AWS S3 target bucket直接在 AWS S3 目标存储桶上运行 java 操作
【发布时间】:2017-09-05 21:51:39
【问题描述】:

我们的工作流程如下:

将数据从 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 操作?如果是,您能否提供一些见解?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    无法在“S3”中运行 java,但您可以将 Java 代码移至 AWS Lambda 函数,所有工作都可以“在云中”完成,即无需下载到本地机器,处理并重新上传。

    在不了解您要求的详细信息的情况下,我会考虑设置一个 S3 通知请求,每次将新文件 PUT 到特定位置时都会调用该通知请求,并使用该新文件的详细信息调用 AWS Lambda 函数,然后让 Lambda 将结果与结果一起输出到不同的存储桶/位置。

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

    【讨论】:

      【解决方案2】:

      没有。

      您无法在 S3 上运行代码。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-04-03
          • 1970-01-01
          • 1970-01-01
          • 2020-10-10
          • 2020-03-14
          • 2022-11-19
          • 1970-01-01
          • 1970-01-01
          • 2017-10-19
          相关资源
          最近更新 更多