AWS:使用可执行文件处理从 S3 输入存储桶到 S3 输出存储桶的所有数据

问题描述 投票:0回答:2

我有以下用例:

在 S3 输入存储桶上,我有大量日志文件(例如,100K 对象中的 5 TB)。我需要使用自定义可执行文件来处理这些日志文件,将日志文件转换为另一种格式 - 然后我希望将结果写入输出 S3 存储桶。

这非常简单,可以通过 AWS Lambda 对新添加的日志文件逐个文件执行操作。我还可以对输入存储桶中的所有单独日志文件运行 Lambda 函数,以便为每个输入获取单个输出文件。

但是,我的可执行文件还能够将输入日志文件以 X MB 的块连接在一起。在普通 PC 上,这可以通过为可执行文件提供包含所有文件的输入文件夹来实现。

但是,在 AWS 中我不确定如何实现同等效果。例如AWS Glue 作业或类似作业,看来我需要将所有 5 TB 下载到某个临时目录 - 这当然是不可能/不切实际的。或者,我需要某种方法将输入存储桶“映射”为本地驱动器 - 但 s3fs 是例如在这种情况下也不是一个实用的解决方案,因为我的可执行文件将通过

subprocess.run
语句运行,即除非直接映射到操作系统,否则无法解析 fsspec 对象。

有没有办法在例如内实现这一目标? AWS Glue 作业或 AWS 环境中的其他无服务器服务?

amazon-web-services aws-glue
2个回答
0
投票

对于长时间运行的作业,我使用了 AWS Batch。凭借正确的权限,您可以访问 S3 存储桶以进行读写以及其他 AWS 资源。就我而言,我有一个传递参数的 .Net Core 可执行文件。使用这些参数,我访问了 S3 对象进行处理,然后移动到另一个 S3 位置。

https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html


0
投票

使用 Lambda 进行 S3 批量操作可能是一个不错的选择。您只需编写一个 lambda 函数,然后提供一个过滤器或对象列表,然后 S3 批量操作将在每个对象上调用 lambda 并提供结果报告。请参阅以下链接了解更多详情

https://docs.aws.amazon.com/lambda/latest/dg/services-s3-batch.html\

https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-invoke-lambda.html

© www.soinside.com 2019 - 2024. All rights reserved.