python - 从 S3 解压缩文件,写入 CSV 文件并推送回 S3

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

最佳答案

您无需担心查询 S3 中的最新对象。只需使用 S3 Event这会触发您的 Lambda 函数。

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

关于python - 从 S3 解压缩文件,写入 CSV 文件并推送回 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55018973/

相关文章:

amazon-web-services - AWS Certificate Manager - 地区重要吗?

c# - 计算每行文本文件的制表符数

python - 值错误: I/O operation on closed file when using **generator** over **list**

amazon-web-services - 尝试允许 lambda 使用基于 S3 资源的策略访问 S3,为什么它不起作用?

hadoop - slf4j 在 Amazon EMR 上与 Mahout 进行多重绑定(bind)

iphone - 使用 CHCSVParser 的基础介绍

python - 如何让 HMM 处理 Tensorflow 中的实值数据

python - 在 linux 上使用 pyodbc 在 nvarchar mssql 字段中插入 unicode 或 utf-8 字符

python - numpy 数组梯度和 matplotlib quiver 的倒序

python - GeoPandas .to_crs() 方法未转换