在python要使用aws的s3,官方建議是透過boto這套libs。
Dependency
- boto
Install
1 | sudo pip install boto |
Usage
Creating a Connection:
設定access和secret key,其中host為上傳s3位置。1
2
3from boto.s3.connection import S3Connection
conn = S3Connection('<aws access key>', '<aws secret key>', host = 's3.amazonaws.com' )
Getting a bucket:
如果你已經在s3的頁面建立好bucket了,可以直接使用get_bucket:1
bucket = conn.get_bucket( 'mybucket' )
或者自己建立:1
bucket = conn.create_bucket('mybucket')
Storing Data:
使用key去建立一個檔案,其中k.key
這個值,假設有多層folder
直接設定在此:1
2
3
4
5from boto.s3.key import Key
k = Key(bucket)
k.key = 'folder/test.txt'
k.set_contents_from_string('This is a test of S3')
之後只要在重新連線,透過k.get_contents_as_string()
就可以取得到資料了。
如果要上傳一個file的話,可透過set_contents_from_filename
,會將你local端的foo.jpg
上傳至s3:1
k.set_contents_from_filename('foo.jpg')
要下載則是採用get_contents_to_filename
:1
k.get_contents_to_filename('bar.jpg')
最後如果想透過變數去儲存至s3,一樣使用set_contents_from_string
:
1 | f = open( "foo.jpg", "rb" ) |
以上這些方式,需檢查k.key
是否對應好s3上面的路徑。