Eliminazione di un bucket - Amazon Simple Storage Service

Eliminazione di un bucket

Un bucket Amazon S3 vuoto può essere eliminato. Prima di eliminare un bucket, considera quanto segue:

  • I nomi dei bucket sono univoci. Se elimini un bucket, il nome potrebbe essere usato da un altro utente AWS.

  • Se il bucket ospita un sito Web statico e hai creato e configurato una zona ospitata di Amazon Route 53 come descritto in Configurazione di un sito web statico utilizzando un dominio personalizzato registrato con Route 53, devi ripulire le impostazioni della zona ospitata di Route 53 associate al bucket. Per ulteriori informazioni, consulta Passaggio 2: eliminare la zona ospitata Route 53.

  • Se il bucket riceve i dati di log da Elastic Load Balancing (ELB): consigliamo di interrompere la consegna dei log ELB al bucket prima dell'eliminazione. Dopo l'eliminazione del bucket, se un altro utente crea un bucket utilizzando lo stesso nome, i dati di log potrebbero potenzialmente essere consegnati a quel bucket. Per informazioni sui registri di accesso ELB, consulta le sezioni Registri di accesso nella Guida per l'utente di Classic Load Balancer e Registri di accesso nella Guida per l'utente di Application Load Balancer.

Risoluzione dei problemi

Se non riesci a eliminare un bucket Amazon S3, considera quanto segue:

  • Assicurati che il bucket sia vuoto – Puoi eliminare solo bucket che non hanno oggetti al loro interno. Assicurati che il bucket sia vuoto.

  • Autorizzazioni S3:DeleteBucket: se non è possibile eliminare un bucket, collaborare con l'amministratore IAM per confermare di disporre delle autorizzazioni s3:DeleteBucket nella policy dell'utente IAM. Per informazioni su come visualizzare o aggiornare le autorizzazioni IAM, consulta la sezione Modifica delle autorizzazioni per un utente IAM nella Guida per l'utente IAM.

  • Istruzione di rifiuto S3:DeleteBucket: se si dispone delle autorizzazioni s3:DeleteBucket nella policy IAM e non è possibile eliminare un bucket, la policy del bucket potrebbe includere un'istruzione di rifiuto per s3:DeleteBucket. I bucket creati da ElasticBeanstalk hanno una policy contenente questa istruzione per impostazione predefinita. Prima di poter eliminare il bucket, è necessario eliminare questa istruzione o la policy del bucket.

Importante

I nomi dei bucket sono univoci. Se elimini un bucket, il nome potrebbe essere usato da un altro utente AWS. Se desideri continuare a utilizzare lo stesso nome di bucket, non eliminare il bucket. Ti consigliamo di eliminare solo il contenuto del bucket.

Per eliminare un bucket S3
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Buckets (Bucket) selezionare l'opzione accanto al nome del bucket che si desidera eliminare, quindi scegliere Delete (Elimina) nella parte superiore della pagina.

  3. Nella pagina Delete bucket (Elimina bucket) confermare che si desidera eliminare il bucket immettendo il nome del bucket nel campo di testo e quindi scegliere Delete bucket (Elimina bucket).

    Nota

    Se il bucket contiene oggetti, svuotarlo prima di eliminarlo selezionando il collegamento di configurazione bucket vuoto nell'avviso di errore This bucket not empty (Questo bucket non è vuoto) e seguendo le istruzioni nella pagina Empty bucket (Svuota bucket). Quindi tornare alla pagina Delete bucket (Elimina bucket) ed eliminare il bucket.

  4. Per verificare di aver eliminato il bucket, apri l'elenco Bucket e inerisci il nome del bucket eliminato. Se il bucket non appare tra i risultati, la cancellazione si è conclusa correttamente.

L'esempio seguente mostra come eliminare un bucket utilizzando l'SDK AWS per Java. In primo luogo, il codice elimina gli oggetti presenti nel bucket e quindi il bucket stesso. Per informazioni su altri SDK AWS, consulta Strumenti per Amazon Web Services.

Java

Nell'esempio Java seguente viene eliminato un bucket che contiene oggetti. Tale codice elimina tutti gli oggetti e quindi il bucket stesso. L'esempio di codice vale sia per i bucket che supportano la funzione Controllo delle versioni che per quelli che non la supportano.

Nota

Per i bucket che non supportano la funzione Controllo delle versioni, è possibile eliminare direttamente tutti gli oggetti e poi il bucket stesso. Per i bucket che supportano la funzione Controllo delle versioni, è necessario eliminare tutte le versioni degli oggetti prima di eliminare il bucket.

Per istruzioni su come creare e testare un esempio di utilizzo, consulta Test degli esempi di codice Java di Amazon S3.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; 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; public class DeleteBucket2 { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Delete all objects from the bucket. This is sufficient // for unversioned buckets. For versioned buckets, when you attempt to delete objects, Amazon S3 inserts // delete markers for all objects, but doesn't delete the object versions. // To delete objects from versioned buckets, delete all of the object versions before deleting // the bucket (see below for an example). ObjectListing objectListing = s3Client.listObjects(bucketName); while (true) { Iterator<S3ObjectSummary> objIter = objectListing.getObjectSummaries().iterator(); while (objIter.hasNext()) { s3Client.deleteObject(bucketName, objIter.next().getKey()); } // If the bucket contains many objects, the listObjects() call // might not return all of the objects in the first listing. Check to // see whether the listing was truncated. If so, retrieve the next page of objects // and delete them. if (objectListing.isTruncated()) { objectListing = s3Client.listNextBatchOfObjects(objectListing); } else { break; } } // Delete all object versions (required for versioned buckets). VersionListing versionList = s3Client.listVersions(new ListVersionsRequest().withBucketName(bucketName)); while (true) { Iterator<S3VersionSummary> versionIter = versionList.getVersionSummaries().iterator(); while (versionIter.hasNext()) { S3VersionSummary vs = versionIter.next(); s3Client.deleteVersion(bucketName, vs.getKey(), vs.getVersionId()); } if (versionList.isTruncated()) { versionList = s3Client.listNextBatchOfVersions(versionList); } else { break; } } // After all objects and object versions are deleted, delete the bucket. s3Client.deleteBucket(bucketName); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client couldn't // parse the response from Amazon S3. e.printStackTrace(); } } }

È possibile eliminare un bucket che contiene oggetti con la AWS CLI se il controllo delle versioni non è abilitato. Quando elimini un bucket che contiene oggetti, tutti gli oggetti nel bucket vengono eliminati definitivamente, inclusi gli oggetti che sono passati alla classe di storage S3 Glacier.

Se il controllo delle versioni del bucket non è abilitato, è possibile utilizzare il comando AWS CLI (rimuovi bucket) della rb con il parametro --force per eliminare il bucket e tutti gli oggetti in esso contenuti. Questo comando elimina prima tutti gli oggetti e quindi il bucket stesso.

Se il controllo delle versioni è abilitato, gli oggetti con versione non verranno eliminati in questo processo: ciò comporterebbe il fallimento dell'eliminazione del bucket in quanto non vuoto. Per ulteriori informazioni sull'eliminazione di oggetti con versione, consulta la sezione Eliminazione delle versioni degli oggetti.

$ aws s3 rb s3://bucket-name --force

Per ulteriori informazioni, consulta la sezione Utilizzo dei comandi di alto livello S3 con la AWS Command Line Interface nella Guida per l'utente di AWS Command Line Interface.