Warum kann ich meinen Amazon S3-Bucket nicht löschen?

Lesedauer: 4 Minute
0

Ich möchte herausfinden, warum ich meinen Amazon Simple Storage Service (Amazon S3)-Bucket nicht löschen kann.

Lösung

Voraussetzungen

Bevor du einen Amazon S3-Bucket löschst, gehe wie folgt vor:

  • Überprüfe und aktualisiere bei Buckets, die du als statische Website hostest, die Einstellungen für gehostete Amazon Route 53-Zonen, die sich auf den Bucket beziehen.
  • Wenn der Bucket Protokolldaten von Elastic Load Balancing (ELB) empfängt, beende die Protokollübermittlung an den Bucket, bevor du den Bucket löschst.

Hinweis: Wenn du einen Bucket-Namen löschst, wird der Name für alle Benutzer verfügbar. Wenn ein anderes AWS-Konto den Bucket-Namen verwendet, kannst du den Bucket-Namen nicht wiederverwenden. Es gehört zu den Best Practices, den Bucket nicht zu löschen. Leere ihn stattdessen.

Der S3-Bucket ist nicht leer

Um einen Amazon S3-Bucket zu löschen, muss der Bucket leer sein. Verwende die Amazon S3-Konsole, das AWS Command Line Interface (AWS CLI) oder das SDK, um den Bucket manuell zu leeren. Wenn der Bucket groß ist und du die Versionsverwaltung konfiguriert hast, dauert es lange, das Objekt manuell zu löschen. Verwende in diesem Fall die Amazon S3-Lebenszykluskonfiguration, um die Buckets zu leeren.

Hinweis: Wenn du beim Ausführen von AWS CLI-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

Nimm für Buckets, die du mit Versionsverwaltung konfiguriert hast oder die sich im Status Gesperrt befinden, die folgenden Regeln in deine Lebenszykluskonfiguration ein:

  • Regel 1: Lässt alle aktuellen Versionen von Objekten X Tage nach der Erstellung ablaufen. Löscht alle nicht aktuellen Versionen von Objekten dauerhaft nach Y Tagen, wenn sie nicht mehr aktuell sind.
  • Regel 2: Lässt alle einzelnen Löschmarkierungen und unvollständigen mehrteiligen Uploads nach Z Tagen ablaufen.

Nimm für Buckets, die du nicht mit Versionsverwaltung konfiguriert hast, die folgenden Regeln in deine Lebenszykluskonfiguration auf:

  • Regel 1: Lässt alle aktuellen Versionen der Objekte X Tage nach der Erstellung des Objekts ablaufen.
  • Regel 2: Lässt alle unvollständigen mehrteiligen Uploads nach Z Tagen ablaufen.

Hinweis: Um den Bucket schnell zu löschen, setze X, Y und Z auf 1 Tag.

Die Amazon S3-Lebenszyklusregeln werden einmal täglich ausgeführt. Nach der Ausführung der Lebenszyklusregeln werden alle Objekte, für die ein Ablaufdatum in Frage kommt, zum Löschen markiert. Da die Aktionen der Lebenszyklusrichtlinie asynchron sind, dauert es mehrere Tage, bis die Objekte physisch aus dem Bucket gelöscht werden. Nachdem ein Objekt zum Löschen markiert wurde, wird dir der Speicherplatz, der dem Objekt zugeordnet ist, nicht mehr in Rechnung gestellt.

Verwendung der AWS CLI

Führe den folgenden Befehl aus, um Objekte dauerhaft aus einem Amazon S3-Bucket zu löschen, den du nicht mit Versionsverwaltung konfiguriert hast:

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

Führe den folgenden Befehl aus, um alle Objekte in einem Amazon S3-Bucket, der gesperrt ist oder den du mit Versionsverwaltung konfiguriert hast, dauerhaft zu löschen:

aws s3api delete-objects --bucket bucket-name --delete "$(aws s3api list-object-versions --bucket bucket-name --output=json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"

Hinweis: Ersetze den bucket-name durch deinen Amazon S3-Bucket-Namen.

Verwendung der Amazon S3-Konsole

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-S3-Konsole.
  2. Wähle im Navigationsbereich den Bucket aus, den du leeren möchtest, und wähle dann Leeren aus.
  3. Gib auf der Seite Bucket leeren in das Textfeld permanently delete ein, um alle Objekte im Bucket zu löschen, und wähle dann Leeren aus.
  4. (Optional) Überprüfe die Seite Bucket leeren: Status, um den Fortschritt zu sehen.

Hinweis: Wenn sich Objektversionen in einem Amazon S3-Bucket im Governance-Modus befinden, erfordert die Identität von AWS Identity and Access Management (IAM) die Berechtigung s3:BypassGovernanceRetention. Um den Governance-Modus zu umgehen, musst du den Header x-amz-bypass-governance-retention:true in deine Anfrage aufnehmen. Bei Anfragen, die du in der AWS-Managementkonsole stellst, wendet die Konsole den Header automatisch auf Anfragen an, die über die erforderlichen Berechtigungen verfügen, um den Governance-Modus zu umgehen.

Während des Aufbewahrungszeitraums kann eine IAM-Identität keine Objektversionen löschen, die im Compliance-Modus geschützt sind, einschließlich des AWS-Konto-Root-Benutzers. Lösche nach Ablauf der Aufbewahrungsfrist die Objekte, die richtlinienkonform geschützt sind. Wenn der Bucket leer ist, lösche den Amazon S3-Bucket.

Zugangspunkte sind dem Bucket zugeordnet

Bevor du den Amazon S3-Bucket löschst, lösche alle Zugangspunkte, die an den Bucket angehängt sind. Du kannst keine Buckets löschen, denen S3-Zugangspunkte oder Multi-Region-Zugangspunkte innerhalb desselben Kontos zugeordnet sind.

Die IAM-Identität verfügt nicht über ausreichende Berechtigungen

Erteile in der IAM-Richtlinie für die IAM-Identität, die du zum Löschen des Buckets verwendest, DeleteBucket-Berechtigungen. Oder nimm die delete-bucket-API-Aktion in die Bucket-Richtlinie auf.

Eine explizite „DENY“-Anweisung verhindert das Löschen

Eine explizite DENY-Anweisung hat Vorrang vor einer expliziten ALLOW-Anweisung. Vergewissere dich, dass die Richtlinien für IAM-Identität, Bucket und Virtual Private Cloud (VPC) keine expliziten DENY-Anweisungen enthalten.

Wenn AWS Elastic Beanstalk einen Bucket erstellt, enthalten die Richtlinien standardmäßig explizite DENY-Anweisungen. Bevor du den Amazon S3-Bucket löschst, lösche die explizite DENY-Anweisung oder die Bucket-Richtlinie.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Monaten