Skip to content

Instantly share code, notes, and snippets.

@rnagle
Created October 27, 2012 20:48
Show Gist options
  • Save rnagle/3966178 to your computer and use it in GitHub Desktop.
Save rnagle/3966178 to your computer and use it in GitHub Desktop.
S3 Utils
import os
from boto import connect_s3
from boto.exception import S3ResponseError
from boto.s3.key import Key
from config import AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, S3_BUCKET
bucket_name = S3_BUCKET
conn = connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
try:
bucket = conn.get_bucket(bucket_name)
except S3ResponseError:
bucket = conn.create_bucket(bucket_name)
def get_url(filename):
"""
Get public url for filename in S3_BUCKET
"""
k = Key(bucket)
k.key = filename
return k.generate_url(0, query_auth=False)
def upload(file, public=False, meta=None):
"""
Upload a file to S3_BUCKET from local file path
"""
k = Key(bucket)
k.key = os.path.basename(file)
if meta is not None:
for metakey, metavalue in meta.items():
k.set_metadata(metakey, metavalue)
k.set_contents_from_filename(file)
if public:
k.make_public()
return k.generate_url(0, query_auth=False)
def write(filename, string, public=False, meta=None):
"""
Write string to filename in S3_BUCKET
"""
k = Key(bucket)
k.key = filename
if meta is not None:
for metakey, metavalue in meta.items():
k.set_metadata(metakey, metavalue)
k.set_contents_from_string(string)
if public:
k.make_public()
return k.generate_url(0, query_auth=False)
def read(filename):
"""
Read filename from S3_BUCKET; return string if found,
return None if not found.
"""
k = Key(bucket)
k.key = filename
try:
return k.get_contents_as_string()
except S3ResponseError:
return None
def delete(filename):
"""
Delete filename from S3_BUCKET
"""
k = Key(bucket)
k.key = filename
try:
return k.delete()
except S3ResponseError:
return False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment