環境
python: 2.7.10
コード
Bucketの一覧を取得する
import boto
import boto.s3.connection
conn = boto.s3.connect_to_region(AWS_REGION,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
is_secure=True, # uncommmnt if you are not using ssl
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
buckets = conn.get_all_buckets()
オブジェクトの中身を取得
bucket = conn.get_bucket(<Bucketの名前>)
key = bucket.get_key(<オブジェクト名>)
print key.get_contents_as_string() # オブジェクトの中身を取得
オブジェクトをアップロード
こちらをimportとする。
from boto.s3.key import Key
bucket = conn.get_bucket('dev') #アップロード先のBucket名
fname = 'test_basic_usage.txt' # ここのファイル名は特に使用されない
with open(fname, 'w') as f:
f.write('basic_usage') # オブジェクトの中身
k = Key(bucket)
k.key = 'AA' # オブジェクト名 もしディレクトリにする場合は'aaa/test'等にする
k.set_contents_from_filename(fname) # S3に作成したファイルを保存
やってることとしては
test_basic_usage.txt
という名前のファイルをカレントディレクトリに作成し、それを
k.set_contents_from_filename
この処理により、アップロードしている。
そういうわけなので,カレントディレクトリに 'test_basic_usage.txt
というファイルができてしまうことに注意
なので、ファイルを消す場合は
delete_file = os.path.dirname(os.path.abspath(__file__)) + '/' + fname
os.remove(delete_file)
という処理を上記処理の最後に追加するのが良い。
S3のpathを期限付きで発行する
bucket = conn.get_bucket('dev') #アップロード先のBucket名
key = bucket.get_key(<Key名>) # "test/test.csv"等
url = key.generate_url(5000)
これも、カレントディレクトリに
s3-ap-northeast-1.amazonaws.com/dev//ファイル名
みたいなフォルダとファイルが作成されるので以下のコードで削除することができる。
shutil.rmtree("s3-ap-northeast-1.amazonaws.com")
# "s3-ap-northeast-1.amazonaws.com"の部分は適当に弄ってください
参考
http://hacknote.jp/archives/17537/
http://srad.jp/~ninestars/journal/557562/