2013-07-08 138 views
3

我想使用boto和python将文件上传到特定位置。我正在访问使用这种效果:通过boto连接到'文件夹's3

from boto.s3.connection import S3Connection 
from boto.s3.key import Key 


conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
bucket = conn.get_bucket('the_bucket_name') 
for key in bucket: 
    print key.name 

这是关键。我已将配额凭证提供给存储桶中的“文件夹”。按此 - Amazon S3 boto - how to create a folder?据我所知,实际上s3中没有文件夹,而是诸如“foo/bar/my_key.txt”之类的键。当我尝试执行get_bucket()我得到

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

因为我不确实有凭据基地桶,而桶键的子集。 my_bucket/the_area_I_have_permission/*

有谁知道我可以通过我在连接步骤中访问的存储桶中的特定“区域”吗?或者我可以用其他方法访问my_bucket/the_area_I_have_permission/*

回答

2

这是否帮助:

bucket = conn.get_bucket('the_bucket_name',validate=False) 

key = bucket.get_key("ur_key_name") 
if key is not None: 
    print key.get_contents_as_string() 

keys = bucket.list(prefix='the_area_I_have_permission') 
for key in keys: 
    print key.name 
+0

感谢您的回复。不。得到了TypeError:get_key()得到了一个意外的关键字参数'prefix',第一个和boto.exception.S3ResponseError:S3ResponseError:403第二个禁止了。 – Brad

+0

哦混合了两个不同的API调用。这一个应该是电话。 关于403,你是否能够使用其他一些clinet访问存储桶(可能是Firefox的UI或S3Explorer插件)与这些secretid/keys? –

+0

dang。第一次我仍然得到403。我试图与“桶名”连接,然后我将路径传递给我试图访问的文件,即:“/some/path/file.json”。那是对的吗?我已经尝试过,没有主导斜线。至于403,是的,是 – Brad