Krzysztof Kowalczyk Blog  •  Notes  •  My Software  •  My Documents

Basics of s3 access with boto

boto is a python library for accessing s3. Here’s a few basic thing I do with it:

Credentials are stored in awscreds.py file:

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)

← newer • 56 of 661older →