从S3解压缩文件,写入CSV文件,然后推回S3

时间:2019-03-06 08:52:15

标签: python amazon-web-services csv amazon-s3 aws-lambda

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

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

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

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')

1 个答案:

答案 0 :(得分:0)

您不必担心查询S3中的最新对象。只需使用触发S3 Event的Lambda函数即可。

这意味着每当您调用Lambda时,都会使用S3上最后插入的对象(因此是最近插入的对象)来调用它。