我构建了一个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')
答案 0 :(得分:0)
您不必担心查询S3中的最新对象。只需使用触发S3 Event的Lambda函数即可。
这意味着每当您调用Lambda时,都会使用S3上最后插入的对象(因此是最近插入的对象)来调用它。