Estoy tratando de desplazarme por todos los cubos en s3 y ver si hay un prefijo que coincida y entrar en esas carpetas y leer los archivos json.
He intentado obtener las carpetas que contienen un prefijo, pero no puedo ingresarlas.
Código:
import boto3 bucket = ['test-eob', 'test-eob-images'] client = boto3.client('s3') for i in bucket: result = client.list_objects(Bucket=i,Prefix = 'PROCESSED_BY/FILE_JSON', Delimiter='/') print(result)Al usar esto, obtengo los que tienen prefijo y falla cuando el cubo no tiene ese prefijo.
estructura de test-eob , test-eob/PROCESSED_BY/FILE_JSON/*.json Tengo que leer el json si solo mi prefijo coincide, de lo contrario sale del cubo.
Puede alguien ayudarme aquí.
Intente detectar el error (¿es un KeyError ?) cuando el depósito no contiene el prefijo.
Por ejemplo:
for i in bucket: try: result = client.list_objects(Bucket=i,Prefix = 'PROCESSED_BY/FILE_JSON', Delimiter='/') print(result) except KeyError: pass Para leer el json , hay varias formas. Por ejemplo, con json.loads() del módulo json.
Entonces, para cada objeto en el cubo:
content_object = s3.Object(bucket_name, file_name) file_content = content_object.get()['Body'].read().decode('utf-8') json_content = json.loads(file_content)