我构建了一个 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/