Einrichten einer S3-Lebenszykluskonfiguration für einen Bucket - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Einrichten einer S3-Lebenszykluskonfiguration für einen Bucket

Sie können eine Amazon S3 Lifecycle-Konfiguration für einen Bucket einrichten, indem Sie die Amazon S3 S3-Konsole, die AWS Command Line Interface (AWS CLI) AWS SDKs, die oder die Amazon S3 S3-REST-API verwenden. Weitere Informationen zur S3-Lebenszykluskonfiguration finden Sie unter Verwalten des Lebenszyklus von Objekten.

Anmerkung

Verwenden Sie die, oder die Amazon S3 S3-REST-API, um die AWS CLI Lebenszykluskonfiguration für einen Directory-Bucket anzuzeigen oder zu bearbeiten. AWS SDKs Weitere Informationen finden Sie unter Arbeiten mit S3 Lifecycle für Verzeichnis-Buckets.

In Ihrer S3-Lebenszykluskonfiguration verwenden Sie Lebenszyklusregeln, um Aktionen zu definieren, die Amazon S3 während des Lebenszyklus eines Objekts ausführen soll. Sie können beispielsweise Regeln definieren, die Objekte nach einem bestimmten Zeitraum an eine andere Speicherklasse überträgt, archiviert oder ablaufen lässt (löscht).

Überlegungen hinsichtlich des S3-Lebenszyklus

Bevor Sie eine Lebenszykluskonfiguration festlegen, beachten Sie Folgendes:

Verzögerung bei der Propagierung der Lebenszykluskonfiguration

Wenn Sie eine S3-Lebenszykluskonfiguration zu einem Bucket hinzufügen, tritt eine gewisse Verzögerung ein, bis eine neue oder aktualisierte Lebenszykluskonfiguration vollständig auf alle Amazon-S3-Systeme verteilt ist. Rechnen Sie mit einer Verzögerung von einigen Minuten, bis die Konfiguration vollständig wirksam ist. Diese Verzögerung kann auch auftreten, wenn Sie eine S3-Lebenszykluskonfiguration löschen.

Verzögerung bei Übertragung oder Ablauf

Zwischen dem Zeitpunkt, zu dem eine Lebenszyklusregel erfüllt wird, und dem Abschließen der Aktion für die Regel gibt es eine Verzögerung. Nehmen wir beispielsweise an, dass eine Gruppe von Objekten aufgrund einer Lebenszyklusregel am 1. Januar abgelaufen ist. Obwohl die Ablaufregel am 1. Januar erfüllt wurde, löscht Amazon S3 diese Objekte möglicherweise erst Tage oder sogar Wochen später. Diese Verzögerung tritt auf, weil S3 Lifecycle Objekte, die übertragen werden oder ablaufen sollen, asynchron in die Warteschlange stellt. Normalerweise zeigen sich jedoch Änderungen bei der Abrechnung sofort nach Erfüllung der Lebenszyklusregel, auch wenn die Aktion noch nicht abgeschlossen ist. Weitere Informationen finden Sie unter Änderungen bei der Abrechnung. Informationen zur Überwachung der Auswirkungen von Aktualisierungen, die durch aktive Lebenszyklusregeln vorgenommen wurden, finden Sie unter Wie überwache ich die Maßnahmen, die im Rahmen meiner Lebenszyklusregeln ergriffen wurden?.

Aktualisieren, Deaktivieren oder Löschen von Lebenszyklusregeln

Wenn Sie eine Lebenszyklusregel deaktivieren oder löschen, stellt Amazon S3 nach einer kurzen Verzögerung die Planung neuer Objekte zur Löschung oder Übertragung ein. Die Planung aller bereits geplanten Objekte wird aufgehoben und sie werden nicht gelöscht oder überführt.

Anmerkung

Bevor Sie Lebenszyklusregeln aktualisieren, deaktivieren oder löschen, verwenden Sie die LIST API-Operationen (wie ListObjectsV2, ListObjectVersions, und ListMultipartUploads) oder Katalogisieren und Analysieren Ihrer Daten mit S3 Inventory um zu überprüfen, ob Amazon S3 aufgrund Ihrer Anwendungsfälle umgestellt wurde und berechtigte Objekte abgelaufen sind. Falls Sie Probleme beim Aktualisieren, Deaktivieren oder Löschen von Lebenszyklusregeln haben, lesen Sie die Informationen unter Fehlerbehebung bei Problemen mit dem Amazon-S3-Lebenszyklus.

Bestehende und neue Objekte

Wenn Sie einem Bucket eine Lebenszykluskonfiguration hinzufügen, gelten die Konfigurationsregeln für vorhandene Objekte und für Objekte, die Sie später hinzufügen. Zum Beispiel: Wenn Sie heute eine Lebenszyklus-Konfigurationsregel mit einer Ablaufaktion hinzufügen, die dazu führt, dass Objekte mit einem bestimmten Präfix 30 Tage nach ihrer Erstellung ablaufen, verschiebt Amazon S3 alle bestehenden Objekte, die mehr als 30 Tage alt sind, in die Löschwarteschlange.

Überwachung der Auswirkungen von Lebenszyklusregeln

Informationen zur Überwachung der Auswirkungen von Aktualisierungen, die durch aktive Lebenszyklusregeln vorgenommen wurden, finden Sie unter Wie überwache ich die Maßnahmen, die im Rahmen meiner Lebenszyklusregeln ergriffen wurden?.

Änderungen bei der Abrechnung

Zwischen dem Zeitpunkt der Erfüllung der Lebenszykluskonfigurationsregeln und der dadurch ausgelösten Aktion könnte eine Verzögerung eintreten. Änderungen bei der Abrechnung zeigen sich jedoch sofort nach Erfüllung der Lebenszykluskonfigurationsregel, auch wenn die Aktion noch nicht durchgeführt wurde.

Beispielsweise wird Ihnen nach dem Ablaufzeitpunkt des Objekts keine Speichergebühr in Rechnung gestellt, auch wenn das Objekt nicht sofort gelöscht wird. Ein weiteres Beispiel: Sobald die Objektübertragungszeit abgelaufen ist, werden Ihnen Speichergebühren von S3 Glacier Flexible Retrieval in Rechnung gestellt, auch wenn das Objekt nicht sofort in die Speicherklasse S3 Glacier Flexible Retrieval übertragen wird.

Jedoch bilden Lebenszyklusübertragungen auf die Speicherklasse S3 Intelligent-Tiering eine Ausnahme. Änderungen bei der Abrechnung zeigen sich erst, wenn das Objekt in die Speicherklasse S3 Intelligent-Tiering übertragen wurde.

Mehrere oder widersprüchliche Regeln

Wenn in einer S3-Lebenszykluskonfiguration mehrere Regeln vorhanden sind, kann es sein, dass für ein Objekt am gleichen Tag mehrere S3-Lebenszyklusaktionen auszuführen sind. In solchen Fällen folgt Amazon S3 diesen allgemeinen Regeln:

  • Das permanente Löschen hat Vorrang vor einem Übergang.

  • Die Übertragung hat Vorrang vor der Erstellung von Löschmarkierungen.

  • Wenn ein Objekt sowohl für die Übertragung auf einen S3 Glacier Flexible Retrieval als auch auf einen S3 Standard-IA (oder S3 One Zone-IA) in Frage kommt, entscheidet sich Amazon S3 für die Übertragung auf S3 Glacier Flexible Retrieval.

Beispiele finden Sie unter Beispiele für überlappende Filter und widersprüchliche Lebenszyklusaktionen.

So richten Sie eine S3-Lebenszykluskonfiguration ein

Sie können eine Amazon S3 Lifecycle-Konfiguration für einen Allzweck-Bucket einrichten, indem Sie die Amazon S3 S3-Konsole, die AWS Command Line Interface (AWS CLI) AWS SDKs, die oder die Amazon S3 S3-REST-API verwenden.

Informationen zu AWS CloudFormation Vorlagen und Beispielen finden Sie unter Arbeiten mit AWS CloudFormation Vorlagen und AWS::S3::Bucket im AWS CloudFormation -Benutzerhandbuch.

Sie können für alle Objekte oder eine Teilmenge der Objekte in einem Bucket Lebenszyklusregeln definieren, indem Sie ein gemeinsames Präfix (Objektnamen, die mit einer gemeinsamen Zeichenfolge beginnen) oder einen Tag verwenden. In Ihrer Lebenszyklusregel können Sie spezifische Aktionen für aktuelle und nicht aktuelle Objektversionen definieren. Weitere Informationen finden Sie hier:

So erstellen Sie eine Lebenszyklusregel:
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Allzweck-Buckets aus.

  3. Wählen Sie in der Bucket-Liste den Namen des Buckets aus, für den Sie eine Lebenszyklusregel erstellen möchten.

  4. Wählen Sie den Tab Management (Verwaltung) und dann die Option Create lifecycle rule (Lebenszyklusregel erstellen).

  5. Geben Sie unter Lifecycle rule name (Name der Lebenszyklusregel) einen Namen für Ihre Regel ein.

    Der Name muss innerhalb des Buckets eindeutig sein.

  6. Wählen Sie den Umfang der Lebenszyklusregel:

    • Um diese Lebenszyklusregel auf alle Objekte mit einem bestimmten Präfix oder Tag anzuwenden, wählen Sie Umfang auf bestimmte Präfixe oder Markierungen beschränken aus.

      • Um den Bereich nach Präfix zu beschränken, geben Sie unter Prefix (Präfix) das Präfix ein.

      • Um den Bereich nach Tag einzuschränken, wählen Sie Add tag (Tag hinzufügen), und geben Sie den Tag-Schlüssel und den Wert ein.

      Weitere Hinweise zu Präfixen für Objektnamen finden Sie unter Markieren von Amazon-S3-Objekten. Weitere Informationen über Objekt-Markierungen finden Sie unter Kategorisieren des Speichers mithilfe von Markierungen.

    • Um diese Lebenszyklusregel auf alle Objekte im Bucket anzuwenden, wählen Sie This rule applies to all objects in the bucket (Diese Regel gilt für alle Objekte in dem Bucket) und wählen Sie dann I acknowledge that this rule applies to all objects in the bucket (Ich bestätige, dass diese Regel für alle Objekte in dem Bucket gilt).

  7. Um eine Regel nach Objektgröße zu filtern, können Sie Mindestobjektgröße festlegen, Maximale Objektgröße festlegen oder beide Optionen aktivieren.

    • Wenn Sie einen Wert für die Mindestobjektgröße oder die maximale Objektgröße angeben, muss der Wert größer als 0 Byte und bis zu 5 TB sein. Sie können diesen Wert in Byte, KB, MB oder GB angeben.

    • Wenn Sie beide Werte angeben, muss die maximale Objektgröße größer als die Mindestobjektgröße sein.

      Anmerkung

      Die Filter Mindestobjektgröße und Maximale Objektgröße schließen die angegebenen Werte aus. Wenn Sie beispielsweise einen Filter so einrichten, dass Objekte mit einer Mindestobjektgröße von 128 KB ablaufen, laufen Objekte, die genau 128 KB groß sind, nicht ab. Stattdessen gilt die Regel nur für Objekte, die größer als 128 KB sind.

  8. Wählen Sie unter Lifecycle rule actions (Lebenszyklusregelaktionen) die Aktionen aus, die Ihre Lebenszyklusregel ausführen soll:

    • Umsetzung aktueller Versionen von Objekten zwischen Speicherklassen

    • Umsetzung früherer Versionen von Objekten zwischen Speicherklassen

    • Ablauf aktueller Versionen von Objekten

      Anmerkung

      Bei Buckets ohne aktivierter S3-Versionierung führt das Ablaufen aktueller Versionen dazu, dass Amazon S3 die Objekte dauerhaft löscht. Weitere Informationen finden Sie unter Lebenszyklusaktionen und der Versioning-Status eines Buckets.

    • Dauerhaftes Löschen früherer Versionen von Objekten

    • Löschen abgelaufener Löschmarkierungen oder unvollständiger mehrteiliger Uploads

    Abhängig von den von Ihnen ausgewählten Aktionen werden verschiedene Optionen angezeigt.

  9. Gehen Sie unter Transition current versions of objects between storage classes (Aktuelle Versionen von Objekten auf andere Speicherklassen übertragen) wie folgt vor, um aktuelle Versionen von Objekten auf andere Speicherklassen zu übertragen:

    1. Wählen Sie unter Storage class transitions (Speicherklassenübertragungen) die Speicherklasse aus, auf die Sie Objekte übertragen möchten: Eine Liste möglicher Übertragungen finden Sie unter Unterstützte Lebenszyklusübergänge. Sie können aus den folgenden Speicherklassen auswählen:

      • S3 Standard-IA

      • S3 Intelligent-Tiering

      • S3 One Zone-IA

      • S3 Glacier Instant Retrieval

      • S3 Glacier Flexible Retrieval

      • S3 Glacier Deep Archive

    2. Geben Sie im Feld Days after object creation (Tage nach der Objekterstellung) die Anzahl der Tage nach der Erstellung für die Umsetzung des Objekts ein.

    Weitere Informationen über Speicherklassen finden Sie unter Verstehen und Verwalten von Amazon-S3-Speicherklassen. Sie können Übergänge für aktuelle oder vorhergehende Objektversionen definieren oder sowohl für aktuelle als auch vorhergehende Versionen. Versioning ermöglicht Ihnen, mehrere Versionen eines Objekts in einem Bucket aufzubewahren. Weitere Informationen über das Versioning finden Sie unter Verwenden der S3-Konsole.

    Wichtig

    Wenn Sie die Speicherklasse S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval oder Glacier Deep Archive wählen, bleibt Ihr Objekt in Amazon S3. Sie können nicht direkt über den separaten Amazon-S3-Glacier-Service auf sie zugreifen. Weitere Informationen finden Sie unter Übertragen von Objekten mit Amazon-S3-Lebenszyklus.

  10. Gehen Sie unter Transition noncurrent versions of objects between storage classes (Aktuelle Versionen von Objekten auf andere Speicherklassen übertragen) wie folgt vor, um nicht aktuelle Versionen von Objekten auf andere Speicherklassen zu übertragen:

    1. Wählen Sie unter Storage class transitions (Speicherklassenübertragungen) die Speicherklasse aus, auf die Sie Objekte übertragen möchten: Eine Liste möglicher Übertragungen finden Sie unter Unterstützte Lebenszyklusübergänge. Sie können aus den folgenden Speicherklassen auswählen:

      • S3 Standard-IA

      • S3 Intelligent-Tiering

      • S3 One Zone-IA

      • S3 Glacier Instant Retrieval

      • S3 Glacier Flexible Retrieval

      • S3 Glacier Deep Archive

    2. Geben Sie im Feld Days after object becomes noncurrent (Tage, nachdem das Objekt nicht mehr aktuell ist) die Anzahl der Tage nach der Erstellung für die Übertragung des Objekts ein.

  11. Um den Ablauf aktueller Versionen von Objekten auszulösen, geben Sie unter Expire current versions of objects (Ablauf aktueller Objektversionen) in Number of days after object creation (Anzahl der Tage nach der Objekterstellung) die Anzahl der Tage ein.

    Wichtig

    In einem Bucket ohne Versionierung führt die Ablaufaktion dazu, dass Amazon S3 das Objekt dauerhaft entfernt. Weitere Informationen über die Lebenszyklus-Aktionen finden Sie unter Elemente, die Lebenszyklusaktionen beschreiben.

  12. Um frühere Versionen von Objekten dauerhaft zu löschen, geben Sie unter Permanently delete previous versions of objects (Dauerhaftes Löschen nicht aktueller Versionen von Objekten) in Days after objects become noncurrent (Tage nach dem Erlöschen von Objekten) die Anzahl der Tage ein. Sie können die Anzahl der beizubehaltenden neueren Versionen optional angeben, indem Sie einen Wert unter Number of newer versions to retain (Anzahl der beizubehaltenden neueren Versionen) eingeben.

  13. Wählen Sie unter Delete expired delete markers or incomplete multipart uploads (Abgelaufene Löschmarkierungen oder unvollständige mehrteilige Uploads löschen) Delete expired object delete markers (Abgelaufene Objektlöschmarken löschen) und Delete incomplete multipart uploads (Unvollständige mehrteilige Uploads löschen) aus. Geben Sie dann die Anzahl der Tage nach der mehrteiligen Upload-Initiierung ein, die Sie beenden und für die Sie unvollständige mehrteilige Uploads löschen möchten.

    Weitere Informationen über mehrteilige Uploads finden Sie unter Hochladen und Kopieren von Objekten mit mehrteiligen Uploads in Amazon S3.

  14. Wählen Sie Create rule aus.

    Wenn die Regel keine Fehler enthält, aktiviert Amazon S3 sie, und Sie können sie im Tab Management (Verwaltung) unter Lifecycle rules (Lebenszyklusregeln) sehen.

Sie können die folgenden AWS CLI Befehle verwenden, um S3 Lifecycle-Konfigurationen zu verwalten:

  • put-bucket-lifecycle-configuration

  • get-bucket-lifecycle-configuration

  • delete-bucket-lifecycle

Anweisungen zur Einrichtung von finden Sie unter Entwickeln mit Amazon S3 mithilfe der AWS CLI in der Amazon S3 S3-API-Referenz. AWS CLI

Beachten Sie, dass die Amazon-S3-Lebenszykluskonfiguration eine XML-Datei ist. Aber wenn Sie das verwenden AWS CLI, können Sie das XML-Format nicht angeben. Sie müssen stattdessen das JSON-Format angeben. Im Folgenden finden Sie Beispiele für XML-Lebenszykluskonfigurationen und die entsprechenden JSON-Konfigurationen, die Sie in einem AWS CLI Befehl angeben können.

Betrachten Sie das folgende Beispiel einer S3-Lebenszykluskonfiguration:

Beispiel 1
XML
<LifecycleConfiguration> <Rule> <ID>ExampleRule</ID> <Filter> <Prefix>documents/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> </LifecycleConfiguration>
JSON
{ "Rules": [ { "Filter": { "Prefix": "documents/" }, "Status": "Enabled", "Transitions": [ { "Days": 365, "StorageClass": "GLACIER" } ], "Expiration": { "Days": 3650 }, "ID": "ExampleRule" } ] }
Beispiel 2
XML
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>id-1</ID> <Expiration> <Days>1</Days> </Expiration> <Filter> <And> <Prefix>myprefix</Prefix> <Tag> <Key>mytagkey1</Key> <Value>mytagvalue1</Value> </Tag> <Tag> <Key>mytagkey2</Key> <Value>mytagvalue2</Value> </Tag> </And> </Filter> <Status>Enabled</Status> </Rule> </LifecycleConfiguration>
JSON
{ "Rules": [ { "ID": "id-1", "Filter": { "And": { "Prefix": "myprefix", "Tags": [ { "Value": "mytagvalue1", "Key": "mytagkey1" }, { "Value": "mytagvalue2", "Key": "mytagkey2" } ] } }, "Status": "Enabled", "Expiration": { "Days": 1 } } ] }

Sie können den Befehl put-bucket-lifecycle-configuration wie folgt testen.

So testen Sie die Konfiguration
  1. Speichern Sie die JSON-Lebenszykluskonfiguration in einer Datei (z. B.: lifecycle.json).

  2. Führen Sie den folgenden AWS CLI Befehl aus, um die Lifecycle-Konfiguration für Ihren Bucket festzulegen. Ersetzen Sie user input placeholders durch Ihre Informationen.

    $ aws s3api put-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket  \ --lifecycle-configuration file://lifecycle.json
  3. Rufen Sie zur Überprüfung die S3-Lifecycle-Konfiguration mit dem folgenden get-bucket-lifecycle-configuration AWS CLI Befehl ab:

    $ aws s3api get-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket
  4. Verwenden Sie den delete-bucket-lifecycle AWS CLI Befehl wie folgt, um die S3 Lifecycle-Konfiguration zu löschen:

    aws s3api delete-bucket-lifecycle \ --bucket amzn-s3-demo-bucket
Java

Sie können den verwenden AWS SDK für Java , um die S3-Lifecycle-Konfiguration eines Buckets zu verwalten. Weitere Informationen zur Verwaltung einer S3-Lebenszykluskonfiguration finden Sie unter Verwalten des Lebenszyklus von Objekten.

Anmerkung

Wenn Sie einem Bucket eine S3-Lebenszykluskonfiguration hinzufügen, ersetzt Amazon S3 die aktuelle Lebenszykluskonfiguration des Buckets, sofern vorhanden. Um eine Lebenszykluskonfiguration zu aktualisieren, rufen Sie sie ab, nehmen die gewünschten Änderungen vor und fügen die geänderte Konfiguration dann dem Bucket hinzu.

Das folgende Beispiel zeigt, wie Sie die AWS SDK für Java Lifecycle-Konfiguration eines Buckets hinzufügen, aktualisieren und löschen können. Das Beispiel erledigt Folgendes:

  • Fügt eine Lebenszykluskonfiguration zu einem Bucket hinzu.

  • Ruft die Lebenszykluskonfiguration und Updates durch Hinzufügen einer weiteren Regel ab.

  • Fügt die abgeänderte Lebenszykluskonfiguration dem Bucket hinzu. Amazon S3 ersetzt die vorhandene Konfiguration.

  • Ruft die Konfiguration erneut ab und überprüft, ob sie die richtige Anzahl von Regeln enthält, indem die Anzahl der Regeln ausgegeben wird.

  • Löscht die Lebenszykluskonfiguration und überprüft, ob sie gelöscht wurde, indem versucht wird, sie erneut abzurufen.

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Erste Schritte im AWS SDK für Java -Entwicklerhandbuch.

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.BucketLifecycleConfiguration; import com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Transition; import com.amazonaws.services.s3.model.StorageClass; import com.amazonaws.services.s3.model.Tag; import com.amazonaws.services.s3.model.lifecycle.LifecycleAndOperator; import com.amazonaws.services.s3.model.lifecycle.LifecycleFilter; import com.amazonaws.services.s3.model.lifecycle.LifecyclePrefixPredicate; import com.amazonaws.services.s3.model.lifecycle.LifecycleTagPredicate; import java.io.IOException; import java.util.Arrays; public class LifecycleConfiguration { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; // Create a rule to archive objects with the "glacierobjects/" prefix to Glacier // immediately. BucketLifecycleConfiguration.Rule rule1 = new BucketLifecycleConfiguration.Rule() .withId("Archive immediately rule") .withFilter(new LifecycleFilter(new LifecyclePrefixPredicate("glacierobjects/"))) .addTransition(new Transition().withDays(0).withStorageClass(StorageClass.Glacier)) .withStatus(BucketLifecycleConfiguration.ENABLED); // Create a rule to transition objects to the Standard-Infrequent Access storage // class // after 30 days, then to Glacier after 365 days. Amazon S3 will delete the // objects after 3650 days. // The rule applies to all objects with the tag "archive" set to "true". BucketLifecycleConfiguration.Rule rule2 = new BucketLifecycleConfiguration.Rule() .withId("Archive and then delete rule") .withFilter(new LifecycleFilter(new LifecycleTagPredicate(new Tag("archive", "true")))) .addTransition(new Transition().withDays(30) .withStorageClass(StorageClass.StandardInfrequentAccess)) .addTransition(new Transition().withDays(365).withStorageClass(StorageClass.Glacier)) .withExpirationInDays(3650) .withStatus(BucketLifecycleConfiguration.ENABLED); // Add the rules to a new BucketLifecycleConfiguration. BucketLifecycleConfiguration configuration = new BucketLifecycleConfiguration() .withRules(Arrays.asList(rule1, rule2)); try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Save the configuration. s3Client.setBucketLifecycleConfiguration(bucketName, configuration); // Retrieve the configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); // Add a new rule with both a prefix predicate and a tag predicate. configuration.getRules().add(new BucketLifecycleConfiguration.Rule().withId("NewRule") .withFilter(new LifecycleFilter(new LifecycleAndOperator( Arrays.asList(new LifecyclePrefixPredicate("YearlyDocuments/"), new LifecycleTagPredicate(new Tag( "expire_after", "ten_years")))))) .withExpirationInDays(3650) .withStatus(BucketLifecycleConfiguration.ENABLED)); // Save the configuration. s3Client.setBucketLifecycleConfiguration(bucketName, configuration); // Retrieve the configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); // Verify that the configuration now has three rules. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); System.out.println("Expected # of rules = 3; found: " + configuration.getRules().size()); // Delete the configuration. s3Client.deleteBucketLifecycleConfiguration(bucketName); // Verify that the configuration has been deleted by attempting to retrieve it. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); String s = (configuration == null) ? "No configuration found." : "Configuration found."; System.out.println(s); } 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(); } } }
.NET

Sie können den verwenden AWS SDK for .NET , um die S3-Lifecycle-Konfiguration in einem Bucket zu verwalten. Weitere Informationen zur Verwaltung einer Lebenszykluskonfiguration finden Sie unter Verwalten des Lebenszyklus von Objekten.

Anmerkung

Wenn Sie eine Lebenszykluskonfiguration hinzufügen, ersetzt Amazon S3 die vorhandene Konfiguration für den angegebenen Bucket. Um eine Konfiguration zu aktualisieren, müssen Sie zuerst die Lebenszykluskonfiguration abrufen, die Änderungen vornehmen und dann die geänderte Lebenszykluskonfiguration dem Bucket hinzufügen.

Das folgende Beispiel zeigt, wie Sie die AWS SDK for .NET Lifecycle-Konfiguration eines Buckets hinzufügen, aktualisieren und löschen können. Das Codebeispiel führt die folgenden Aufgaben durch:

  • Fügt eine Lebenszykluskonfiguration zu einem Bucket hinzu.

  • Ruft die Lebenszykluskonfiguration und Updates durch Hinzufügen einer weiteren Regel ab.

  • Fügt die abgeänderte Lebenszykluskonfiguration dem Bucket hinzu. Amazon S3 ersetzt die vorhandene Lebenszykluskonfiguration.

  • Ruft die Konfiguration erneut ab und überprüft sie durch Ausgabe der Anzahl von Regeln in der Konfiguration.

  • Löscht die Lebenszykluskonfiguration und überprüft den Löschvorgang.

Informationen zum Einrichten und Ausführen der Codebeispiele finden Sie unter Getting Started with the AWS SDK for .NET (Erste Schritte mit dem NET) im AWS SDK for .NET -Entwicklerhandbuch.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class LifecycleTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); AddUpdateDeleteLifecycleConfigAsync().Wait(); } private static async Task AddUpdateDeleteLifecycleConfigAsync() { try { var lifeCycleConfiguration = new LifecycleConfiguration() { Rules = new List<LifecycleRule> { new LifecycleRule { Id = "Archive immediately rule", Filter = new LifecycleFilter() { LifecycleFilterPredicate = new LifecyclePrefixPredicate() { Prefix = "glacierobjects/" } }, Status = LifecycleRuleStatus.Enabled, Transitions = new List<LifecycleTransition> { new LifecycleTransition { Days = 0, StorageClass = S3StorageClass.Glacier } }, }, new LifecycleRule { Id = "Archive and then delete rule", Filter = new LifecycleFilter() { LifecycleFilterPredicate = new LifecyclePrefixPredicate() { Prefix = "projectdocs/" } }, Status = LifecycleRuleStatus.Enabled, Transitions = new List<LifecycleTransition> { new LifecycleTransition { Days = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleTransition { Days = 365, StorageClass = S3StorageClass.Glacier } }, Expiration = new LifecycleRuleExpiration() { Days = 3650 } } } }; // Add the configuration to the bucket. await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration); // Retrieve an existing configuration. lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client); // Add a new rule. lifeCycleConfiguration.Rules.Add(new LifecycleRule { Id = "NewRule", Filter = new LifecycleFilter() { LifecycleFilterPredicate = new LifecyclePrefixPredicate() { Prefix = "YearlyDocuments/" } }, Expiration = new LifecycleRuleExpiration() { Days = 3650 } }); // Add the configuration to the bucket. await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration); // Verify that there are now three rules. lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client); Console.WriteLine("Expected # of rulest=3; found:{0}", lifeCycleConfiguration.Rules.Count); // Delete the configuration. await RemoveLifecycleConfigAsync(client); // Retrieve a nonexistent configuration. lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration) { PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }; var response = await client.PutLifecycleConfigurationAsync(request); } static async Task<LifecycleConfiguration> RetrieveLifecycleConfigAsync(IAmazonS3 client) { GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest { BucketName = bucketName }; var response = await client.GetLifecycleConfigurationAsync(request); var configuration = response.Configuration; return configuration; } static async Task RemoveLifecycleConfigAsync(IAmazonS3 client) { DeleteLifecycleConfigurationRequest request = new DeleteLifecycleConfigurationRequest { BucketName = bucketName }; await client.DeleteLifecycleConfigurationAsync(request); } } }
Ruby

Sie können die verwenden AWS SDK für Ruby , um eine S3-Lifecycle-Konfiguration in einem Bucket mithilfe der Klasse zu verwalten AWS::S3::BucketLifecycleConfiguration. Weitere Informationen zur Verwaltung der S3 Lifecycle-Konfiguration finden Sie unterVerwalten des Lebenszyklus von Objekten.

In den folgenden Abschnitten der Amazon Simple Storage Service API-Referenz werden die REST-API-Vorgänge im Zusammenhang mit der S3-Lebenszykluskonfiguration beschrieben.

Fehlerbehebung bei S3 Lifecycle

Informationen zu häufigen Problemen, die bei der Arbeit mit S3 Lifecycle auftreten können, finden Sie unter Fehlerbehebung bei Problemen mit dem Amazon-S3-Lebenszyklus.