La AWS SDK for Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-support
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Realizar operaciones en objetos de Amazon S3
Un objeto de Amazon S3 representa un archivo o conjunto de datos. Cada objeto debe residir en un bucket.
nota
En estos ejemplos de código se presupone que conoce la información que se describe en Uso del AWS SDK for Java y que ha configurado credenciales de AWS predeterminadas mediante la información de Configuración de credenciales y regiones de AWS para desarrollo.
Temas
Carga de un objeto
Utilice el método putObject
del cliente AmazonS3, proporcionando un nombre de bucket, un nombre de clave y el archivo que se va a cargar. El bucket debe existir o se producirá un error.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Code
System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.putObject(bucket_name, key_name, new File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Consulte el ejemplo completo
Lista de objetos
Para obtener una lista de objetos dentro de un bucket, utilice el método listObjects
del cliente AmazonS3, proporcionando el nombre de un bucket.
El método listObjects
devuelve un objeto ObjectListing que proporciona información acerca de los objetos del bucket. Para mostrar los nombres de objeto (claves), utilice el método getObjectSummaries
para obtener una lista de objetos S3ObjectSummary, cada uno de los cuales representa un solo objeto del bucket. A continuación, llame a su método getKey
para recuperar el nombre del objeto.
Importaciones
import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.S3ObjectSummary;
Code
System.out.format("Objects in S3 bucket %s:\n", bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListObjectsV2Result result = s3.listObjectsV2(bucket_name); List<S3ObjectSummary> objects = result.getObjectSummaries(); for (S3ObjectSummary os : objects) { System.out.println("* " + os.getKey()); }
Consulte el ejemplo completo
Descarga de un objeto
Utilice el método getObject
del cliente AmazonS3, pasando el nombre del bucket y el objeto que se van a descargar. Si se ejecuta correctamente, el método devuelve un S3Object. El bucket y la clave de objeto especificados deben existir o se producirá un error.
Puede obtener el contenido del objeto llamando a getObjectContent
en el S3Object
. Esto devuelve un S3ObjectInputStream que se comporta como un objeto InputStream
Java estándar.
El siguiente ejemplo descarga un objeto de S3 y guarda su contenido en un archivo (con el mismo nombre que la clave del objeto).
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import java.io.File;
Code
System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { S3Object o = s3.getObject(bucket_name, key_name); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key_name)); byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } s3is.close(); fos.close(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); }
Consulte el ejemplo completo
Copiar, mover o cambiar de nombre objetos
Puede copiar un objeto de un bucket en otro mediante el método copyObject
del cliente AmazonS3. Este método toma el nombre del bucket desde el que se va a realizar la copia, el objeto destino de la copia y el nombre del bucket de destino.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;
Code
try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!");
Consulte el ejemplo completo
nota
Puede utilizar copyObject
con deleteObject para mover o cambiar de nombre un objeto. Para ello, primero copie el objeto en un nuevo nombre (puede utilizar el mismo bucket como origen y destino) y, a continuación, elimine el objeto de su antigua ubicación.
Eliminar un objeto
Utilice el método deleteObject
del cliente AmazonS3, pasando el nombre del bucket y el objeto que se van a eliminar. El bucket y la clave de objeto especificados deben existir o se producirá un error.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;
Code
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Consulte el ejemplo completo
Eliminación de varios objetos a la vez
Con el método deleteObjects
del cliente AmazonS3, puede eliminar varios objetos del mismo bucket pasando sus nombres al método link:sdk-for-java/v1/reference/com/amazonaws/services/s3/model/DeleteObjectsRequest.html.
Importaciones
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Code
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name) .withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Consulte el ejemplo completo