Posted at

Python3でバイト型データをs3にgzipで圧縮してアップロード

More than 3 years have passed since last update.

Python3での例があまりなかったので。

やってみたコードを適当に真似て書いただけなので適宜置き換えてください。

import io

import gzip
from boto.s3.connection import S3Connection
from boto.s3.key import Key

def upload(data): # dataはバイト型のデータ
stream = io.BytesIO()
gzip_file = gzip.GzipFile(fileobj=stream, mode='w')
gzip_file.write(data)
gzip_file.close()
conn = S3Connection(AWS_ACCESS_ID, AWS_SECRET_KEY, host=S3_HOST)
bucket = conn.get_bucket('bucket_name')
k = Key(bucket, 'key_name')
k.set_contents_from_string(stream.getvalue(), headers={"Content-Type": 'application/x-gzip'})