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.
Creación, enumeración y eliminación de buckets de Amazon S3
Todos los objetos (archivos) de Amazon S3 deben residir en un bucket, que representa una colección (contenedor) de objetos. Cada bucket se designa por medio de una clave (nombre), que debe ser única. Para obtener información detallada acerca de los buckets y su configuración, consulte Uso de buckets de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.
nota
Práctica recomendada
Le recomendamos que habilite la regla del ciclo de vida AbortIncompleteMultipartUpload en los buckets de Amazon S3.
Esta regla le indica a Amazon S3 que anule las cargas multiparte que no se completen en un número especificado de días después de iniciarse. Cuando se supera el plazo establecido, Amazon S3 anula la carga y, a continuación, elimina la carga de datos incompleta.
Para obtener más información, consulte Configuración de ciclo de vida para un bucket con control de versiones en la Guía del usuario de Amazon S3.
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.
Crear un bucket
Utilizar el método createBucket
del cliente AmazonS3. Se devuelve el nuevo bucket. El método createBucket
producirá una excepción si el bucket ya existe.
nota
Para comprobar si un bucket ya existe antes de intentar crear uno con el mismo nombre, llame al método doesBucketExist
. Este método devolverá true
si el bucket existe y false
en caso contrario.
Importaciones
import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.Bucket; import java.util.List;
Code
if (s3.doesBucketExistV2(bucket_name)) { System.out.format("Bucket %s already exists.\n", bucket_name); b = getBucket(bucket_name); } else { try { b = s3.createBucket(bucket_name); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } } return b;
Consulte el ejemplo completo
Lista de buckets
Utilizar el método listBucket
del cliente AmazonS3. Si se ejecuta correctamente, se devuelve una lista de buckets.
Importaciones
import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.Bucket; import java.util.List;
Code
List<Bucket> buckets = s3.listBuckets(); System.out.println("Your {S3} buckets are:"); for (Bucket b : buckets) { System.out.println("* " + b.getName()); }
Consulte el ejemplo completo
Eliminar un bucket
Antes de eliminar un bucket de Amazon S3, debe asegurarse de que el bucket está vacío o se producirá un error. Si tiene un bucket con control de versiones, también debe eliminar todos los objetos con control de versiones asociados al bucket.
nota
El ejemplo completo
Temas
Eliminar objetos de un bucket sin control de versiones antes de eliminarlo
Utilice el método listObjects
del cliente AmazonS3 para recuperar la lista de objetos y deleteObject
para eliminar cada uno de ellos.
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.*; import java.util.Iterator;
Code
System.out.println(" - removing objects from bucket"); ObjectListing object_listing = s3.listObjects(bucket_name); while (true) { for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext(); ) { S3ObjectSummary summary = (S3ObjectSummary) iterator.next(); s3.deleteObject(bucket_name, summary.getKey()); } // more object_listing to retrieve? if (object_listing.isTruncated()) { object_listing = s3.listNextBatchOfObjects(object_listing); } else { break; } }
Consulte el ejemplo completo
Eliminar objetos de un bucket con control de versiones antes de eliminarlo
Si utiliza un bucket con control de versiones, también tendrá que eliminar todas las versiones almacenadas de los objetos del bucket para poder eliminarlo.
Siguiendo un patrón similar al utilizado para eliminar objetos dentro de un bucket, elimine los objetos con control de versiones utilizando el método listVersions
del cliente AmazonS3 para mostrar todos los objetos con control de versiones y después deleteVersion
para eliminar cada uno de ellos.
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.*; import java.util.Iterator;
Code
System.out.println(" - removing versions from bucket"); VersionListing version_listing = s3.listVersions( new ListVersionsRequest().withBucketName(bucket_name)); while (true) { for (Iterator<?> iterator = version_listing.getVersionSummaries().iterator(); iterator.hasNext(); ) { S3VersionSummary vs = (S3VersionSummary) iterator.next(); s3.deleteVersion( bucket_name, vs.getKey(), vs.getVersionId()); } if (version_listing.isTruncated()) { version_listing = s3.listNextBatchOfVersions( version_listing); } else { break; } }
Consulte el ejemplo completo
Eliminar un bucket vacío
Después de eliminar los objetos de un bucket (incluidos los objetos con control de versiones), puede eliminar el propio bucket mediante el método deleteBucket
del cliente AmazonS3.
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.*; import java.util.Iterator;
Code
System.out.println(" OK, bucket ready to delete!"); s3.deleteBucket(bucket_name);
Consulte el ejemplo completo