繁体   English   中英

内存中的python gzip文件并上传到s3

[英]python gzip file in memory and upload to s3

我正在使用python 2.7 ...

我正在尝试建立两个日志文件,使用sed从特定日期获取数据。 需要压缩文件并将其上传到s3,而无需在系统上制作任何临时文件,

sed_command = "sed -n '/{}/,/{}/p'".format(last_date, last_date)

流 :

  1. 猫两个文件。

示例:cat file1 file2

  1. 在内存中运行sed操作。
  2. 使用zip或gzip将结果压缩到内存中。
  3. 将内存中的压缩文件上传到s3。

我已经成功地在系统上创建了临时文件,并在完成向s3的上传后将其删除了,从而成功地完成了此任务。 如果没有创建任何临时文件,我将找不到可行的解决方案来使它运行。

这是要点:

conn = boto.s3.connection.S3Connection(aws_key, secret_key)
bucket = conn.get_bucket(bucket_name, validate=True)
buffer = cStringIO.StringIO()
writer = gzip.GzipFile(None, 'wb', 6, buffer)
writer.write(sys.stdin.read())
writer.close()
buffer.seek(0)
boto.s3.key.Key(bucket, key_path).set_contents_from_file(buffer)
buffer.close()

答案有点晚,但是我最近发布了一个软件包 ,可以通过pypi安装:

    pip install aws-logging-handlers

您可以在git上找到用法文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM