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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python gzip文件在内存中并上传到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()
另一答案

这是一个迟到的答案,但我最近发布了一个package就是这样,它可以通过pypi安装:

    pip install aws-logging-handlers

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

以上是关于python gzip文件在内存中并上传到s3的主要内容,如果未能解决你的问题,请参考以下文章

python - 使用 matplotlib 和 boto 将绘图从内存上传到 s3

将存储在内存中的文件上传到s3

Gzip 与 Amazon S3/Cloudfront 失败

Boto3没有将zip文件上传到S3 python

在 Amazon s3 中将 Spark RDD 编写为 Gzipped 文件

复制到运行良好但不加载数据 gzip 文件