Saltar al contenido

Leer archivo AWS s3 en código Java

Buscamos en el mundo online para así mostrarte la respuesta para tu duda, en caso de alguna pregunta puedes dejarnos tu comentario y te contestamos porque estamos para ayudarte.

Solución:

La clase ‘Archivo’ de Java no entiende que S3 existe. Aquí hay un ejemplo de cómo leer un archivo de la documentación de AWS:

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());        
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();
// Process the objectData stream.
objectData.close();

En 2019, hay una forma un poco más óptima de leer un archivo de S3:

private final AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard().build();

private Collection loadFileFromS3() 
    try (final S3Object s3Object = amazonS3Client.getObject(BUCKET_NAME,
                                                            FILE_NAME);
         final InputStreamReader streamReader = new InputStreamReader(s3Object.getObjectContent(), StandardCharsets.UTF_8);
         final BufferedReader reader = new BufferedReader(streamReader)) 
        return reader.lines().collect(Collectors.toSet());
     catch (final IOException e) 
        log.error(e.getMessage(), e)
        return Collections.emptySet();
    

Si el contenido del archivo es un string, entonces puede usar getObjectAsString. De lo contrario, puede usar IOUtils.toByteArray en getObjectContent() para leer el contenido del archivo en un byte array.

Obviamente, estos se utilizan mejor en objetos S3 pequeños que caben fácilmente en la memoria.

private final AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard().build();

private String loadStringFromS3() 
    try 
        return amazonS3Client.getObjectAsString(BUCKET_NAME, FILE_NAME);
     catch (final IOException e) 
        log.error(e.getMessage(), e)
        return null;
    


private byte[] loadDataFromS3() 
    try (final S3Object s3Object = amazonS3Client.getObject(BUCKET_NAME, FILE_NAME)) 
        return IOUtils.toByteArray(s3Object.getObjectContent());
     catch (final IOException e) 
        log.error(e.getMessage(), e)
        return null;
     finally 
        IOUtils.closeQuietly(object, log);
    

Si para ti ha resultado de utilidad nuestro artículo, nos gustaría que lo compartas con el resto entusiastas de la programación y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *