Creación, enumeración y eliminación de buckets de Amazon S3 - AWS SDK for Java 1.x

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-supportdiciembre de 2025. Le recomendamos que migre al para AWS SDK for Java 2.xseguir recibiendo nuevas funciones, mejoras de disponibilidad y actualizaciones de seguridad.

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 en GitHub.

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 en GitHub.

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 incluye cada uno de estos pasos en orden, lo que constituye una solución completa para eliminar un bucket de Amazon S3 y su contenido.

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 en GitHub.

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 en GitHub.

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 en GitHub.