首页 > 解决方案 > 从 S3 解压缩文件,写入 CSV 文件并推回 S3

问题描述

我构建了一个 lambda,它每天从 EC2 实例收集日志并将它们上传到 S3 存储桶。日志存储为 .gz 文件,现在我想构建另一个 lambda,它收集最近上传的日志文件,解压缩,将其写入 CSV 文件,然后将其推回 s3。

我已经设法收集了一个日志文件,将其解压缩并将其推回,但我想要一些指导如何定位 s3 存储桶中的最新文件,以及如何在推回之前将其写入 CSV。

我正在为我的 lambda 使用 Python,这就是我的代码现在的样子:

def lambda_handler(event, context):
s3 = boto3.client('s3', use_ssl = False)

s3.upload_fileobj(
    Fileobj = gzip.GzipFile(
        None,
        'rb',
        fileobj = BytesIO(
            s3.get_object(Bucket='bucketName', Key='key')['Body'].read())),
            Bucket ='bucketName',
            Key ='key')

标签: pythonamazon-web-servicescsvamazon-s3aws-lambda

解决方案


您无需担心在 S3 中查询最新的对象。只需使用触发您的 Lambda 函数的S3 事件。

这意味着无论何时调用 Lambda,都会使用 S3 上最后插入的对象调用它,因此是最新的。


推荐阅读