Aktivieren des Versioning für Buckets - 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.

Aktivieren des Versioning für Buckets

Sie können Amazon-S3-Versioning nutzen, um mehrere Versionen eines Objekts in einem Bucket aufzubewahren. Dieser Abschnitt enthält Beispiele dafür, wie die Versionierung für einen Bucket mithilfe der Konsole, REST API AWS SDKs, und AWS Command Line Interface (AWS CLI) aktiviert wird.

Anmerkung

Wenn Sie die Versionierung für einen Bucket zum ersten Mal aktivieren, kann es bis zu 15 Minuten dauern, bis die Änderung vollständig übernommen ist. Wir empfehlen, nach der Aktivierung der Versionierung 15 Minuten zu warten, bevor Sie Schreibvorgänge (PUToderDELETE) für Objekte im Bucket ausführen. Schreibvorgänge, die ausgeführt werden, bevor diese Konvertierung abgeschlossen ist, können sich auf Objekte ohne Version beziehen.

Weitere Informationen über das S3-Versioning finden Sie unter Beibehaltung mehrerer Versionen von Objekten mit S3 Versioning. Informationen zum Arbeiten mit Objekten, die sich in einem versioning-fähigen Bucket befinden, finden Sie unter Arbeiten mit Objekten in einem versioning-fähigen Bucket.

Weitere Informationen zur Verwendung von S3 Versioning zum Schutz von Daten finden Sie im Tutorial: Schutz von Daten in Amazon S3 vor versehentlichem Löschen oder Anwendungsfehlern mithilfe von S3 Versioning, S3 Object Lock und S3 Replication.

Jedem von Ihnen erstellten S3-Bucket ist eine Versioning-Subressource zugeordnet. (Weitere Informationen finden Sie unter Optionen für die Bucket-Konfiguration.) Standardmäßig ist Ihr Bucket nicht versioning-fähig, und dementsprechend speichert die Versioning-Subressource eine leere Versioning-Konfiguration wie folgt.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>

Um das Versioning zu aktivieren, können Sie eine Anfrage an Amazon S3 mit einer Versionskonfiguration senden, die einen Status enthält.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>

Um das Versioning auszusetzen, setzen Sie den Statuswert auf Suspended.

Der Bucket-Eigentümer und alle autorisierten Benutzer können das Versioning aktivieren. Der Bucket-Besitzer ist derjenige AWS-Konto , der den Bucket erstellt hat (das Root-Konto). Weitere Informationen zu Berechtigungen finden Sie unter Identity and Access Management für Amazon S3.

In den folgenden Abschnitten finden Sie weitere Informationen zur Aktivierung der S3-Versionierung mithilfe der Konsole AWS CLI, und der AWS SDKs.

Gehen Sie wie folgt vor, AWS Management Console um die Versionierung in einem S3-Bucket zu aktivieren.

Aktivieren und Deaktivieren des Versionings für einen S3-Bucket
  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 in der Liste Buckets den Namen des Buckets aus, für den Sie Versioning aktivieren möchten.

  3. Wählen Sie Properties (Eigenschaften).

  4. Wählen Sie unter Bucket Versioning (Bucket-Versioning) die Option Edit (Bearbeiten).

  5. Wählen Sie Suspend (Anhalten) oder Enable (Aktivieren) und dann Save changes (Änderungen speichern).

Anmerkung

Sie können die AWS Multi-Faktor-Authentifizierung (MFA) mit Versionierung verwenden. Wenn Sie die Option MFA mit Versionierung verwenden, müssen Sie Ihre Zugangsschlüssel und einen gültigen Code vom MFA Gerät AWS-Konto des Kontos angeben, um eine Objektversion dauerhaft zu löschen oder die Versionierung auszusetzen oder zu reaktivieren.

Für die Verwendung MFA mit Versionierung aktivieren Sie. MFA Delete Sie können jedoch MFA Delete nicht mit der AWS Management Console aktivieren. Sie müssen das AWS Command Line Interface (AWS CLI) oder das API verwenden. Weitere Informationen finden Sie unter MFALöschen konfigurieren.

Im folgenden Beispiel wird das Versioning auf einem S3-Bucket aktiviert.

aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled

Das folgende Beispiel aktiviert die S3-Versionierung und das Löschen mit Multi-Faktor-Authentifizierung (MFA) für einen Bucket.

aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SERIAL 123456"
Anmerkung

Für die Verwendung von MFA delete ist ein zugelassenes physisches oder virtuelles Authentifizierungsgerät erforderlich. Weitere Informationen zur Verwendung von MFA Delete in Amazon S3 finden Sie unterMFALöschen konfigurieren.

Weitere Informationen zur Aktivierung der AWS CLI Versionierung mithilfe von finden Sie put-bucket-versioningin der AWS CLI Befehlsreferenz.

In den folgenden Beispielen wird die Versionsverwaltung für einen Bucket aktiviert und anschließend der Versionsstatus mithilfe von AWS SDK for Java und abgerufen. AWS SDK for .NET Informationen zur Verwendung von anderen AWS SDKs finden Sie im AWS Developer Center.

.NET

Informationen zum Einrichten und Ausführen der Codebeispiele finden Sie unter Erste Schritte mit dem AWS SDK for. NETim AWS SDKfür. NETLeitfaden für Entwickler.

using System; using Amazon.S3; using Amazon.S3.Model; namespace s3.amazon.com.docsamples { class BucketVersioningConfiguration { static string bucketName = "*** bucket name ***"; public static void Main(string[] args) { using (var client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { try { EnableVersioningOnBucket(client); string bucketVersioningStatus = RetrieveBucketVersioningConfiguration(client); } catch (AmazonS3Exception amazonS3Exception) { if (amazonS3Exception.ErrorCode != null && (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") || amazonS3Exception.ErrorCode.Equals("InvalidSecurity"))) { Console.WriteLine("Check the provided AWS Credentials."); Console.WriteLine( "To sign up for service, go to http://aws.amazon.com/s3"); } else { Console.WriteLine( "Error occurred. Message:'{0}' when listing objects", amazonS3Exception.Message); } } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } static void EnableVersioningOnBucket(IAmazonS3 client) { PutBucketVersioningRequest request = new PutBucketVersioningRequest { BucketName = bucketName, VersioningConfig = new S3BucketVersioningConfig { Status = VersionStatus.Enabled } }; PutBucketVersioningResponse response = client.PutBucketVersioning(request); } static string RetrieveBucketVersioningConfiguration(IAmazonS3 client) { GetBucketVersioningRequest request = new GetBucketVersioningRequest { BucketName = bucketName }; GetBucketVersioningResponse response = client.GetBucketVersioning(request); return response.VersioningConfig.Status; } } }
Java

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Erste Schritte im AWS SDK for Java Entwicklerhandbuch.

import java.io.IOException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.BucketVersioningConfiguration; import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest; public class BucketVersioningConfigurationExample { public static String bucketName = "*** bucket name ***"; public static AmazonS3Client s3Client; public static void main(String[] args) throws IOException { s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.setRegion(Region.getRegion(Regions.US_EAST_1)); try { // 1. Enable versioning on the bucket. BucketVersioningConfiguration configuration = new BucketVersioningConfiguration().withStatus("Enabled"); SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest = new SetBucketVersioningConfigurationRequest(bucketName,configuration); s3Client.setBucketVersioningConfiguration(setBucketVersioningConfigurationRequest); // 2. Get bucket versioning configuration information. BucketVersioningConfiguration conf = s3Client.getBucketVersioningConfiguration(bucketName); System.out.println("bucket versioning configuration status: " + conf.getStatus()); } catch (AmazonS3Exception amazonS3Exception) { System.out.format("An Amazon S3 error occurred. Exception: %s", amazonS3Exception.toString()); } catch (Exception ex) { System.out.format("Exception: %s", ex.toString()); } } }
Python

Das folgende Python-Beispiel erstellt einen Amazon-S3-Bucket, aktiviert ihn für das Versioning und konfiguriert einen Lebenszyklus, der nicht-aktuelle Objektversionen nach 7 Tagen ablaufen lässt.

def create_versioned_bucket(bucket_name, prefix): """ Creates an Amazon S3 bucket, enables it for versioning, and configures a lifecycle that expires noncurrent object versions after 7 days. Adding a lifecycle configuration to a versioned bucket is a best practice. It helps prevent objects in the bucket from accumulating a large number of noncurrent versions, which can slow down request performance. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket_name: The name of the bucket to create. :param prefix: Identifies which objects are automatically expired under the configured lifecycle rules. :return: The newly created bucket. """ try: bucket = s3.create_bucket( Bucket=bucket_name, CreateBucketConfiguration={ "LocationConstraint": s3.meta.client.meta.region_name }, ) logger.info("Created bucket %s.", bucket.name) except ClientError as error: if error.response["Error"]["Code"] == "BucketAlreadyOwnedByYou": logger.warning("Bucket %s already exists! Using it.", bucket_name) bucket = s3.Bucket(bucket_name) else: logger.exception("Couldn't create bucket %s.", bucket_name) raise try: bucket.Versioning().enable() logger.info("Enabled versioning on bucket %s.", bucket.name) except ClientError: logger.exception("Couldn't enable versioning on bucket %s.", bucket.name) raise try: expiration = 7 bucket.LifecycleConfiguration().put( LifecycleConfiguration={ "Rules": [ { "Status": "Enabled", "Prefix": prefix, "NoncurrentVersionExpiration": {"NoncurrentDays": expiration}, } ] } ) logger.info( "Configured lifecycle to expire noncurrent versions after %s days " "on bucket %s.", expiration, bucket.name, ) except ClientError as error: logger.warning( "Couldn't configure lifecycle on bucket %s because %s. " "Continuing anyway.", bucket.name, error, ) return bucket