Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Löschen oder Leeren von Buckets

Es ist einfach, einen leeren Bucket zu löschen. In einigen Situationen müssen Sie vielleicht einen leeren Bucket mit Objekten löschen oder leeren. In diesem Abschnitt erklären wir, wie Sie Objekte in einem nicht-versionierten Bucket und wie Sie Objektversionen und Löschmarkierungen in einem Bucket mit aktiviertem Versioning löschen. Weitere Informationen über Versioning finden Sie unter Verwenden von Versioning. In einigen Situationen kann es sinnvoll sein, einen Bucket zu leeren, statt ihn zu löschen. Dieser Abschnitt erklärt verschiedene Optionen, die Sie nutzen können, um einen leeren Bucket mit Objekten zu löschen oder zu leeren.

Bucket löschen

Sie können einen Bucket und seinen Inhalt programmgesteuert mithilfe der AWS-SDKs löschen. Sie können auch eine Lebenszykluskonfiguration für einen Bucket verwenden, um seinen Inhalt zu leeren und ihn dann zu löschen. Es gibt noch weitere Optionen, wie beispielsweise die Verwendung der Amazon S3-Konsole und der AWS-CLI, aber für diese Methode gelten abhängig von der Anzahl der Objekte in Ihrem Bucket und dem Versioning-Status des Buckets Einschränkungen.

Einen Bucket löschen: Mit der Amazon S3-Konsole

Die Amazon S3-Konsole unterstützt das Löschen eines Buckets, das leer sein kann, aber nicht muss. Weitere Informationen über die Verwendung der Amazon S3-Konsole zum Löschen eines Buckets finden Sie unter Wie lösche ich einen S3-Bucket? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Einen Bucket löschen: Mit der AWS CLI

Einen Bucket, der Objekte enthält, können Sie mit der AWS CLI nur dann löschen, wenn für den Bucket das Versioning nicht aktiviert ist. Wenn für Ihren Bucket das Versioning nicht aktiviert ist, können Sie den AWS CLI-Befehl rb (remove bucket) mit dem Parameter --force verwenden, um einen nicht leeren Bucket zu löschen. Dieser Befehl löscht zuerst alle Objekte und dann den Bucket.

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

Weitere Informationen finden Sie unter Verwenden von S3-High-Level-Befehlen mit der AWS Command Line Interface im Benutzerhandbuch für AWS Command Line Interface.

Um einen nicht leeren Bucket zu löschen, für den das Versioning nicht aktiviert ist, können Sie wie folgt vorgehen:

  • Programmgesteuertes Löschen des Buckets mit dem AWS SDK.

  • Löschen aller Objekte über die Lebenszykluskonfiguration des Buckets und dann Löschen des leeren Buckets mithilfe der Amazon S3-Konsole.

Einen Bucket löschen: Mit der Lebenszykluskonfiguration

Sie können den Lebenszyklus für Ihren Bucket konfigurieren, sodass Objekte ablaufen. Amazon S3 löscht dann abgelaufene Objekte. Sie können Lebenszykluskonfigurationsregeln hinzufügen, sodass alle Objekte oder eine Untermenge davon mit einem spezifischen Schlüsselnamenpräfix ablaufen. Sie können z. B. eine Lebenszyklusregel so festlegen, dass Objekte einen Tag nach dem Erstellungsdatum ablaufen, um alle Objekte in einem Bucket zu entfernen.

Wenn für Ihren Bucket das Versioning aktiviert ist, können Sie die Regel auch so konfigurieren, dass nicht aktuelle Objekte ablaufen.

Nachdem Amazon S3 alle Objekte in Ihrem Bucket gelöscht hat, können Sie den Bucket löschen oder ihn behalten.

Wichtig

Wenn Sie den Bucket nur leeren, nicht aber löschen möchten, stellen Sie sicher, dass Sie die Lebenszykluskonfigurationsregel entfernt haben, die Sie hinzugefügt haben, um den Bucket zu leeren, sodass alle neuen Objekte, die Sie in dem Bucket erstellen, auch darin bleiben.

Weitere Informationen finden Sie unter Verwaltung des Objektlebenszyklus und Konfigurieren des Objektablaufdatums.

Einen Bucket löschen: Mit der AWS SDKs

Sie können einen Bucket mit den AWS SDKs löschen. Die folgenden Abschnitte zeigen Beispiele für das Löschen eines Buckets mit AWS SDK for Java und .NET. Zuerst löscht der Code Objekte im Bucket, und dann löscht er das Bucket. Weitere Informationen über andere AWS-SDKs finden Sie unter Tools for Amazon Web Services.

Einen Bucket mit der AWS SDK for Java löschen

Das folgende Java-Beispiel löscht einen Bucket mit Objekten. Zuerst löscht das Beispiel alle Objekte und dann den Bucket. Das Beispiel funktioniert für Buckets mit oder ohne aktiviertem Versioning.

Anmerkung

Bei Buckets ohne aktiviertes Versioning können Sie alle Objekte direkt löschen und danach den Bucket löschen. Bei Buckets mit aktiviertem Versioning müssen Sie zuerst alle Objektversionen löschen, bevor Sie den Bucket löschen.

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Testen der Amazon S3-Java-Codebeispiele.

import java.util.Iterator; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListVersionsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.S3ObjectSummary; import com.amazonaws.services.s3.model.S3VersionSummary; import com.amazonaws.services.s3.model.VersionListing; public class DeleteBucket { public static void main(String[] args) { String clientRegion = "*** Client 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(); } } }

Einen Bucket leeren

Sie können einen Bucket und seinen Inhalt programmgesteuert unter Verwendung des AWS SDK leeren (d. h. Sie löschen den gesamten Inhalt, behalten aber den Bucket bei). Sie können auch eine Lebenszykluskonfiguration für einen Bucket angeben, sodass Objekte ablaufen, damit Amazon S3 sie löschen kann. Es gibt noch weitere Optionen, wie beispielsweise die Verwendung der Amazon S3-Konsole und der AWS CLI, aber diese Methode hat abhängig von der Anzahl der Objekte in Ihrem Bucket und dem Versioning-Status des Buckets Einschränkungen.

Einen Bucket leeren: Mit der Amazon S3-Konsole

Weitere Informationen über die Verwendung der Amazon S3-Konsole zum Leeren eines Buckets finden Sie unter Wie leere ich einen S3-Bucket? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Einen Bucket leeren: Mit der AWS CLI

Einen Bucket nur dann mit der AWS CLI leeren, wenn für den Bucket das Versioning nicht aktiviert ist. Wenn für Ihren Bucket das Versioning nicht aktiviert ist, können Sie den AWS CLI-Befehl rm (remove bucket) mit dem Parameter --recursive verwenden, um einen Bucket zu leeren (oder eine Untermenge von Objekten mit einem spezifischen Schlüsselnamenpräfix zu entfernen).

Der folgende rm-Befehl entfernt Objekte mit dem Schlüsselnamenpräfix doc, z. B. doc/doc1 und doc/doc2.

$ aws s3 rm s3://bucket-name/doc --recursive

Verwenden Sie den folgenden Befehl, um alle Objekte zu entfernen, ohne ein Präfix anzugeben.

$ aws s3 rm s3://bucket-name --recursive

Weitere Informationen finden Sie unter Verwenden von S3-High-Level-Befehlen mit der AWS Command Line Interface im Benutzerhandbuch für AWS Command Line Interface.

Anmerkung

Aus einem Bucket mit aktiviertem Versioning können Sie keine Objekte entfernen. Amazon S3 fügt eine Löschmarkierung hinzu, wenn Sie ein Objekt löschen. Das macht dieser Befehl. Weitere Informationen über Versioning finden Sie unter Verwenden von Versioning.

Um einen Bucket mit aktiviertem Versioning zu leeren, haben Sie die folgenden Optionen:

  • Programmgesteuertes Löschen des Buckets mit dem AWS SDK.

  • Sie können die Lebenszykluskonfiguration für einen Bucket verwenden, um anzufordern, dass Amazon S3 die Objekte löscht.

  • Verwenden Sie die Amazon S3-Konsole. Weitere Informationen finden Sie unter Wie leere ich einen S3-Bucket? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Einen Bucket leeren: Mit der Lebenszykluskonfiguration

Sie können den Lebenszyklus für Ihren Bucket konfigurieren, sodass Objekte ablaufen. Amazon S3 kann dann aufgefordert werden, abgelaufene Objekte zu löschen. Sie können Lebenszykluskonfigurationsregeln hinzufügen, sodass alle Objekte oder eine Untermenge davon mit einem spezifischen Schlüsselnamenpräfix ablaufen. Sie können z. B. eine Lebenszyklusregel so festlegen, dass Objekte einen Tag nach dem Erstellungsdatum ablaufen, um alle Objekte in einem Bucket zu entfernen.

Wenn für Ihren Bucket das Versioning aktiviert ist, können Sie die Regel auch so konfigurieren, dass nicht aktuelle Objekte ablaufen.

Warnung

Nachdem Ihre Objekte abgelaufen sind, löscht Amazon S3 die abgelaufenen Objekte. Wenn Sie den Bucket nur leeren, nicht aber löschen möchten, stellen Sie sicher, dass Sie die Lebenszykluskonfigurationsregel entfernt haben, die Sie hinzugefügt haben, um den Bucket zu leeren, sodass alle neuen Objekte, die Sie in dem Bucket erstellen, auch darin bleiben.

Weitere Informationen finden Sie unter Verwaltung des Objektlebenszyklus und Konfigurieren des Objektablaufdatums.

Einen Bucket leeren: Mit der AWS SDKs

Sie können die AWS SDKs verwenden, um einen Bucket zu leeren oder eine Untermenge von Objekten mit einem spezifischen Schlüsselnamenpräfix zu entfernen.

Ein Beispiel zum Leeren eines Buckets mit dem AWS SDK for Java finden Sie unter Einen Bucket mit der AWS SDK for Java löschen. Der Code löscht alle Objekte, unabhängig davon, ob für den Bucket das Versioning aktiviert ist. Anschließend löscht er den Bucket. Um den Bucket nur zu leeren, stellen Sie sicher, dass Sie die Anweisung entfernen, die den Bucket löscht.

Weitere Informationen über die Verwendung anderer AWS-SDKs finden Sie unter Tools für Amazon Web Services.