Я хотел бы получить список из s3 различных папок до глубины 5
, например, если у меня есть объекты ниже в корзине s3
inbound/publisher/segment/db/tb1/yyyy/mm/dd/hhmmss/file1
inbound/publisher/segment/db/tb1/yyyy/mm/dd/hhmmss/file2
inbound/publisher/segment/db/tb1/yyyy/mm/dd/hhmmss/file3
inbound/publisher/segment/db/tb2/yyyy/mm/dd/hhmmss/file1
inbound/publisher/segment/db/tb2/yyyy/mm/dd/hhmmss/file2
inbound/publisher/segment/db2/tb1/yyyy/mm/dd/hhmmss/file11
inbound/publisher/segment/db2/tb2/yyyy/mm/dd/hhmmss/file31
вывод должен быть таким:
inbound/publisher/segment/db/tb1
inbound/publisher/segment/db/tb2
inbound/publisher/segment/db2/tb1
inbound/publisher/segment/db2/tb2
Я использовал библиотеку boto3 в приведенном ниже коде и попытался получить результат, используя paginator.
, но paginator выдает полный список, может помочь кто-то получить ожидаемый результат, как указано выше .
вот мой код.
import boto3
S3 = boto3.client('s3', 'eu-west-1')
PAGINATOR = S3.get_paginator('list_objects_v2')
def lambda_handler(event, context):
bucket_name = "sample_bucket"
prefix_key = "inbound/publisher/"
pages = PAGINATOR.paginate(
Bucket=bucket_name,
Prefix=prefix_key
)
obj_list = []
for page in pages:
if 'Contents' in page:
for obj in page['Contents']:
obj_list.append({'Key': obj['Key']})
print(obj_list)
else:
print('No Contents Found')
, но приведенный выше код возвращает весь список объектов, я пытался использовать Delimiter = '/' при передаче аргумента для разбивки на страницы, но затем он переходит к другому блокировать и печатать содержимое не найдено.
С уважением, Махи