ユーザーがアップロードした画像とかをS3に保存したいときに使うメモ。
AWSのAccessKeyとSecretAccessKeyはAWSコンソールにログインして、「右上のアカウント名 > Security Credentials」 で生成しておきます。
pip install boto
S3に投げ込むのはboto(読みはボートー、でいいんだろうか。。。)だけあればOK。Python2.7でもPython3.4でもpipでインストールできました。
$ pip freeze boto==2.32.1
投げ込むコードは以下
from boto.s3.connection import S3Connection from boto.s3.key import Key def main(): print('start') _s3 = S3Connection( 'AccessKey', 'SecretAccessKey', ) _bucket = _s3.get_bucket('バケット名称') _key = Key(_bucket) _key.set_metadata('Content-Type', 'image/jpeg') _key.key = 'img.jpg' _key.set_contents_from_filename('./img.jpg') if __name__=='__main__': main()
非常に簡単。
set_metadataは無くてもJpegファイルの場合は問題ないっぽいけど、Content-Typeによっては問題が出たりするのかもしれない。
バケット側のパーミッションとかポリシーとかはまた別の話ということで。