Boto3 S3: Obtén archivos sin obtener carpetas

Con boto3, ¿cómo puedo recuperar todos los archivos en mi bucket de S3 sin recuperar las carpetas?

Considere la siguiente estructura de archivos:

file_1.txt
folder_1/
    file_2.txt
    file_3.txt
    folder_2/
        folder_3/
            file_4.txt

En este ejemplo, solo estoy interesado en los 4 archivos.

EDITAR:

Una solución manual es:

def count_files_in_folder(prefix):
    total = 0
    keys = s3_client.list_objects(Bucket=bucket_name, Prefix=prefix)
    for key in keys['Contents']:
        if key['Key'][-1:] != '/':
            total += 1
    return total

En este caso el total sería 4.

Si acabo de hacer

count = len(s3_client.list_objects(Bucket=bucket_name, Prefix=prefix))

el resultado sería 7 objetos (4 archivos y 3 carpetas):

file.txt
folder_1/
folder_1/file_2.txt
folder_1/file_3.txt
folder_1/folder_2/
folder_1/folder_2/folder_3/
folder_1/folder_2/folder_3/file_4.txt

Sólo quiero:

file.txt
folder_1/file_2.txt
folder_1/file_3.txt  
folder_1/folder_2/folder_3/file_4.txt

Respuestas a la pregunta(3)

Su respuesta a la pregunta