python - 从 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')
解决方案
您无需担心在 S3 中查询最新的对象。只需使用触发您的 Lambda 函数的S3 事件。
这意味着无论何时调用 Lambda,都会使用 S3 上最后插入的对象调用它,因此是最新的。
推荐阅读
- c# - 如何使用 REST 发送密码安全
- reactjs - React Native ScrollView 不会随着子大小而扩展
- oracle - NVL2 并且在 Oracle 中不存在
- shell - gzip不在unix shell脚本中压缩文件
- python - 递归错误:麻烦
- python-3.x - 与 readline() 或计数器一起使用时 range() 函数出现问题 - 仅读取和处理文件中的最后一行
- javascript - GatsbyJS 不正确地呈现 URL
- git - `host.name.edu:XXXX` 是 `.ssh/config` 文件的无效格式吗?
- opengl - 有没有办法将数组缓冲区的一部分复制到另一个缓冲区?
- arrays - 在 Swift 5 中,如何有效地提取和使用多维数组中的元素?