2017-08-09 26 views
-1

我知道我想访问的桶的路径/bucket1/bucket2/etc/但我无法弄清楚如何通过boto3访问它。在S3中使用Boto3访问嵌套桶0

我可以枚举所有从源头开始的桶,但无法到达我想要的桶。

例如,我可以这样做:

prod_bucket = s3.Bucket('prod') 

但我不能这样做:

prod_bucket = s3.Bucket('prod/prod2/') 

TIA

+1

您使用了错误的术语。桶是入口点,也就是平面名称空间。那么只需从命令行输入'aws s3 ls s3://'prod/prod2 /''' –

+0

确定它在CLI中正常工作,但与boto3/python不能正常工作。 –

回答

2

没有嵌套桶。你有桶和物体。

s3 = boto3.client('s3') 
object = s3.get_object(Bucket='prod', Key='prod2/..') 

或者:

s3 = boto3.resource('s3') 
bucket = s3.Bucket('prod') 
object = bucket.Object('prod2/..') 

参见:get_object

+0

这对我不起作用,我得到一个“botocore.errorfactory.NoSuchKey”。即使我已经仔细检查过名称/键是否正确。 –

+0

明白了,谢谢! –