boto is a python library for accessing s3. Here’s a few basic thing I do with it: Credentials are stored in access = "awsaccess" secret = "awssecret" Few useful functions:
import sys
try:
import boto.s3
from boto.s3.key import Key
from boto.exception import S3ResponseError
except:
print("boto library (http://code.google.com/p/boto/) for aws needs to be installed")
sys.exit(1)
try:
import awscreds
except:
print("awscreds.py file needed with access and secret globals for aws access")
sys.exit(1)
s3BucketName = "kjklogs" # name of the s3 bucket
def s3connection():
global g_s3conn
if g_s3conn is None:
g_s3conn = boto.s3.connection.S3Connection(awscreds.access, awscreds.secret, True)
return g_s3conn
def s3CreateBucket(): return s3connection().create_bucket(s3BucketName)
def s3Bucket(): return s3connection().get_bucket(s3BucketName)
def ul_cb(sofar, total):
print("So far: %d, total: %d" % (sofar , total))
def s3UploadFilePrivate(local_file_name, remote_file_name):
print("Uploading '%s' to s3 as '%s'" % (local_file_name, remote_file_name))
bucket = s3Bucket()
k = Key(bucket)
k.key = remote_file_name
k.set_contents_from_filename(local_file_name, cb=ul_cb)
return k
def s3UploadFilePublic(local_file_name, remote_file_name):
k = s3UploadFilePrivate(local_file_name, remote_file_name)
k.make_public()
def s3UploadDataPrivate(data, remote_file_name):
print("Uploading data to s3 as '%s'" % remote_file_name)
bucket = s3Bucket()
k = Key(bucket)
k.key = remote_file_name
k.set_contents_from_string(data)
return k
def s3UploadDataPublic(data, remote_file_name):
k = s3UploadDataPrivate(data, remote_file_name)
k.make_public()
def s3EnsureDoesntExist(remote_file_path):
bucket = s3PubBucket()
if not bucket.get_key(remote_file_path):
return
print("'%s' already exists on s3" % remote_file_path)
sys.exit(1)
|