A simple script that can browse a directory, and upload to S3 some files matching a regex.
The file will be uploaded by respecting the path you have in local.
#!/usr/bin/env python # -*- coding: utf-8 -*- import os, re import boto from boto.s3.connection import S3Connection from boto.s3.key import Key # Variables AWS_ACCESS_KEY_ID = 'YOUR_AWS_ACCESS_KEY_ID' AWS_SECRET_ACCESS_KEY = 'YOUR_AWS_SECRET_ACCESS_KEY' AWS_BUCKET_NAME = 'YOUR_BUCKET_NAME' DIR_TO_SCAN = '/path/to/your/directory/' # Prepare regex r = re.compile("[0-9]+\.jpg$") # Open connection to S3 conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) b = conn.get_bucket(AWS_BUCKET_NAME) k = Key(b) for root, directories, filenames in os.walk(DIR_TO_SCAN): for filename in filenames: if r.match(os.path.join(root,filename)): print os.path.join(root,filename) # Remove the full path tp = os.path.join(root,filename).split(DIR_TO_SCAN)[1] # Push file to S3 k.key = tp size = k.set_contents_from_filename(os.path.join(root,filename), replace=False) print "%d bytes uploaded for %s"%(size, tp)