web-technical-blog

web開発に関する技術メモ

pythonでS3にgzip形式でPUTする

PythonでS3にgzip形式でPUTする際は以下のようにすればいける。

Python 2.7.5

import boto3
from boto3.session import Session

buff = '111,222,333'

# output csv
session = Session(aws_access_key_id=your_access_key_id,
                    aws_secret_access_key=your_secret_access_key',
                 )

bucket = "your-bucket"
key = "{}.csv.gz".format("yyyy-mm-dd")

io = StringIO()
with GzipFile(fileobj=io, mode='wb') as f:
    f.write(buff)

body = io.getvalue()
s3 = session.resource('s3')
s3.Bucket(bucket).put_object(Key=key, Body=body, ACL='public-read', ContentEncoding='gzip')