2016-05-01 5 views
2

Я пытаюсь реплицировать команду AWS CLI ls, чтобы рекурсивно перечислить файлы в ведро AWS S3. Например, я бы использовал следующую команду, чтобы рекурсивно перечислить все файлы в веществе «location2».Как рекурсивно перечислить файлы в ведро AWS S3 с использованием AWS SDK для Python?

aws s3 ls s3://location2 --recursive 

Что такое AWS SDK for Python (т.е. boto3) эквивалент aws s3 ls s3://location2 --recursive?

ответ

2

Нет необходимости использовать параметр --recursive при использовании AWS SDK, поскольку он перечисляет все объекты в ковше с использованием метода list_objects.

import boto3 
client = boto3.client('s3') 
client.list_objects(Bucket='MyBucket') 
0

Использование API более высокого уровня и использование ресурсов - путь.

import boto3 

s3 = boto3.resource('s3') 
bucket = s3.Bucket('location2') 
bucket_files = [x.key for x in bucket.objects.all()] 
0

Вы также можете использовать minio-py клиентскую библиотеку, его с открытым исходным кодом & совместим с AWS S3.

list_objects.py приведенный ниже, вы можете обратиться к docs за дополнительной информацией.

 
from minio import Minio 

client = Minio('s3.amazonaws.com', 
       access_key='YOUR-ACCESSKEYID', 
       secret_key='YOUR-SECRETACCESSKEY') 

# List all object paths in bucket that begin with my-prefixname. 
objects = client.list_objects('my-bucketname', prefix='my-prefixname', 
           recursive=True) 
for obj in objects: 
    print(obj.bucket_name, obj.object_name.encode('utf-8'), obj.last_modified, 
      obj.etag, obj.size, obj.content_type) 

Надеюсь, что это поможет.

Отказ от ответственности: Работа для Minio