1 import os, sys, tempfile
3 from boto.s3.bucket import Bucket
4 from boto.s3.key import Key
8 class S3Store(cumulus.store.Store):
9 def __init__(self, bucket, prefix):
10 self.conn = boto.connect_s3(is_secure=False)
11 self.bucket = self.conn.create_bucket(bucket)
12 while prefix.endswith("/"): prefix = prefix[:-1]
15 def _get_key(self, type, name):
17 k.key = "%s/%s/%s" % (self.prefix, type, name)
21 prefix = "%s/%s/" % (self.prefix, type)
22 for i in self.bucket.list(prefix):
23 assert i.key.startswith(prefix)
24 yield i.key[len(prefix):]
26 def get(self, type, name):
27 fp = tempfile.TemporaryFile()
28 k = self._get_key(type, name)
33 def put(self, type, name, fp):
34 k = self._get_key(type, name)
37 def delete(self, type, name):
38 self.bucket.delete_key("%s/%s/%s" % (self.prefix, type, name))
40 def stat(self, type, name):
41 k = self.bucket.get_key("%s/%s/%s" % (self.prefix, type, name))
42 return {'size': int(k.size)}