Lifecycle-Policies anwenden
Lifecycle-Regeln räumen Buckets automatisch auf: Objekte werden nach einer definierten Zeit gelöscht, alte Versionen entfernt und abgebrochene Multipart-Uploads bereinigt. Das spart Speicherkosten ohne manuelle Pflege.
Was Lifecycle-Regeln können
- Expiration: aktuelle Objekte nach X Tagen (oder zu einem Datum) löschen
- NoncurrentVersionExpiration: nichtaktuelle Versionen nach X Tagen entfernen (bei Versioning)
- ExpiredObjectDeleteMarker: verwaiste Delete-Marker aufräumen
- AbortIncompleteMultipartUpload: hängengebliebene Multipart-Uploads nach X Tagen verwerfen
- Filter: Regeln auf Prefixes (z. B.
logs/) oder Tags einschränken
Beispielkonfiguration
lifecycle.json:
{
"Rules": [
{
"ID": "logs-nach-30-tagen-loeschen",
"Status": "Enabled",
"Filter": { "Prefix": "logs/" },
"Expiration": { "Days": 30 }
},
{
"ID": "alte-versionen-aufraeumen",
"Status": "Enabled",
"Filter": { "Prefix": "" },
"NoncurrentVersionExpiration": { "NoncurrentDays": 90 },
"Expiration": { "ExpiredObjectDeleteMarker": true }
},
{
"ID": "multipart-reste-verwerfen",
"Status": "Enabled",
"Filter": { "Prefix": "" },
"AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 }
}
]
}
Anwenden:
aws s3api put-bucket-lifecycle-configuration --bucket mein-bucket \
--lifecycle-configuration file://lifecycle.json \
--endpoint-url https://s3.internet1.de
Warnung
put-bucket-lifecycle-configuration ersetzt die gesamte bestehende Konfiguration. Vor Änderungen die aktuelle Konfiguration exportieren und ergänzen statt überschreiben.
Prüfen und entfernen
aws s3api get-bucket-lifecycle-configuration --bucket mein-bucket \
--endpoint-url https://s3.internet1.de
aws s3api delete-bucket-lifecycle --bucket mein-bucket \
--endpoint-url https://s3.internet1.de
Verhalten und Feinheiten
- Regeln werden asynchron ausgeführt (typischerweise einmal täglich); das Löschen kann daher mit Verzögerung erfolgen.
- Bei aktiviertem Versioning erzeugt eine
Expirationauf die aktuelle Version zunächst nur einen Delete-Marker – endgültig gelöscht wird die Version erst überNoncurrentVersionExpiration. - Objekte mit aktiver Object-Lock-Retention oder Legal Hold werden erst gelöscht, wenn der Schutz endet.
Dayszählt ab dem Zeitpunkt des letzten Uploads (LastModified),NoncurrentDaysab dem Moment, in dem eine Version nichtaktuell wurde.
Typische Rezepte
| Ziel | Regel |
|---|---|
Temp-Dateien unter tmp/ nach 1 Tag löschen | Filter.Prefix = "tmp/", Expiration.Days = 1 |
| Versionierten Backup-Bucket schlank halten | NoncurrentVersionExpiration.NoncurrentDays = 30 + ExpiredObjectDeleteMarker = true |
| Kosten durch abgebrochene Groß-Uploads vermeiden | AbortIncompleteMultipartUpload.DaysAfterInitiation = 7 (für jeden Bucket empfehlenswert) |
Backup-Software
Auf Buckets, die von Backup-Tools (Veeam, Bareos, restic …) verwaltet werden, keine Expiration-Regeln anwenden – die Aufbewahrung steuert dort ausschließlich die Backup-Software. Unschädlich und sinnvoll ist einzig die Multipart-Aufräumregel.