Created
October 27, 2012 20:48
-
-
Save rnagle/3966178 to your computer and use it in GitHub Desktop.
S3 Utils
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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