【问题标题】:Extract .gz files in S3 automatically自动提取 S3 中的 .gz 文件
【发布时间】:2018-07-10 17:29:41
【问题描述】:

当 ALB 日志文件从 ALB 自动上传到 S3 时,我正在尝试寻找一种解决方案来提取 .gz 格式的 ALB 日志文件。

我的bucket结构是这样的

/log-bucket
..alb-1/AWSLogs/account-number/elasticloadbalancing/ap-northeast-1/2018/log.gz
..alb-2/AWSLogs/account-number/elasticloadbalancing/ap-northeast-1/2018/log.gz
..alb-3/AWSLogs/account-number/elasticloadbalancing/ap-northeast-1/2018/log.gz

基本上,每 5 分钟,每个 ALB 会自动将日志推送到对应的 S3 存储桶。我想当时在同一个存储桶中提取新的 .gz 文件。

有什么办法可以解决吗?

我注意到我们可以使用 Lambda 函数,但不知道从哪里开始。示例代码将不胜感激!

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    您的最佳选择可能是让 AWS Lambda 函数订阅 S3 事件。每当创建新对象时,都会触发此 Lambda 函数。然后 Lambda 函数可以从 S3 读取文件,提取它,将提取的数据写回 S3 并删除原始数据。

    Using AWS Lambda with Amazon S3 中描述了它的工作原理。

    也就是说,您可能还需要重新考虑是否真的需要在 S3 中存储未压缩的日志。压缩文件不仅更便宜,因为它们占用的存储空间不如未压缩文件,而且通常处理速度更快,因为大多数情况下的瓶颈是传输数据的网络带宽,而没有可用的 CPU 资源减压。大多数工具还支持直接处理压缩文件。以 Amazon Athena (Compression Formats) 或 Amazon EMR (How to Process Compressed Files) 为例。

    【讨论】:

    • 嗨@Dunedan 使用 S3 作为触发器听起来不错。在哪里可以找到使用 Lambda 提取 .gz 文件的示例脚本?我想提取它们的原因是因为我必须将它们推送到不支持压缩文件的 Elasticsearch。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2013-07-16
    相关资源
    最近更新 更多