使用Boto3嵌套密钥获取S3中文件的完整路径

mr-*_*-sk 2 python amazon-s3 amazon-web-services boto3

我的桶结构如下:

bucket
    production
        dt=2017-01-01
            file1.json
        ...
        dt=2017-05-01
            file2.json
Run Code Online (Sandbox Code Playgroud)

我要做的是获取file1.json,file2.json的完整路径,以便我可以下载它们.

我很难做到这一点就是python.任何帮助表示赞赏.TIA.

hel*_*loV 8

s3 = boto3.client('s3')
Run Code Online (Sandbox Code Playgroud)

您可以通过调用列出所有对象 list_objects

objs = s3.list_objects(Bucket='mybucket')['Contents']
Run Code Online (Sandbox Code Playgroud)

使用列表推导,获取忽略文件夹的对象名称(大小为0)

[obj['Key'] for obj in objs if obj['Size']]
Run Code Online (Sandbox Code Playgroud)

或者:

s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
[key.key for key in bucket.objects.all() if key.size]
Run Code Online (Sandbox Code Playgroud)

如果要列出具有特定前缀的对象:

# S3 list all keys with the prefix 'photos/'
s3 = boto3.resource('s3')
bucket = s3.Bucket('production')
  for obj in bucket.objects.filter(Prefix='2017-01-01/'):
    if obj.size: print obj.key
Run Code Online (Sandbox Code Playgroud)