Activation de la gestion des versions sur les compartiments - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Activation de la gestion des versions sur les compartiments

Vous pouvez utiliser la gestion des versions Simple Storage Service (Amazon S3) pour conserver plusieurs versions d'un objet dans un même compartiment. Cette section fournit des exemples expliquant comment activer le versionnement sur un bucket à l'aide de la console, de l'API REST, AWS des SDK et AWS Command Line Interface ()AWS CLI.

Note

Si vous activez le versionnement sur un bucket pour la première fois, la propagation complète de la modification peut prendre jusqu'à 15 minutes. Nous vous recommandons d'attendre 15 minutes après l'activation de la gestion des versions avant d'exécuter des opérations d'écriture (PUT ou DELETE) sur les objets du compartiment. Les opérations d'écriture effectuées avant la fin de cette conversion peuvent s'appliquer à des objets non versionnés.

Pour plus d’informations sur la gestion des versions S3, consultez Utilisation de la gestion des versions dans les compartiments S3. Pour en savoir plus sur l'utilisation d'objets se trouvant dans un compartiment dont la gestion des versions est activée, veuillez consulter Utiliser des objets dans un compartiment activé pour la gestion des versions.

Pour en savoir plus sur l'utilisation de la gestion des versions S3 pour protéger les données, consultez Tutoriel : protection des données sur Amazon S3 contre les suppressions accidentelles ou les bogues d'application à l'aide de l'archivage par versions S3, du verrouillage d'objets S3 et de la réplication S3.

Chaque compartiment S3 créé possède une sous-ressource de gestion des version qui lui est associée. (Pour plus d'informations, consultez Options de configuration des compartiments.) Par défaut, votre compartiment est non versionné, et la sous-ressource de la gestion des versions stocke une configuration de gestion des versions vide, comme suit :

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

Pour activer la gestion des versions, vous pouvez envoyer une demande à Simple Storage Service (Amazon S3) avec une configuration de la gestion des versions qui inclut un statut.

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

Pour désactiver la gestion des versions, vous configurez la valeur de l'état sur Suspended.

Le propriétaire du compartiment et tous les utilisateurs autorisés peuvent activer la gestion des versions. Le propriétaire du bucket est celui Compte AWS qui a créé le bucket (le compte root). Pour plus d’informations sur les autorisations, consultez Identity and Access Management pour Amazon S3.

Les sections suivantes fournissent plus de détails sur l'activation de la gestion des versions S3 à l'aide de la console et des AWS SDK. AWS CLI

Procédez comme suit pour utiliser le AWS Management Console afin d'activer le versionnement sur un compartiment S3.

Pour activer ou désactiver la gestion des versions dans un compartiment S3
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Buckets (Compartiments), choisissez le nom du compartiment pour lequel vous souhaitez activer la gestion des versions.

  3. Choisissez Propriétés.

  4. Sous Bucket Versioning (Gestion des versions de compartiment), choisissez Edit (Modifier).

  5. Choisissez Suspend (Interrompre) ou Enable (Activer), puis Save changes (Enregistrer les modifications).

Note

Vous pouvez utiliser l'authentification AWS multifactorielle (MFA) avec le versionnement. Lorsque vous utilisez l'authentification MFA avec le contrôle de version, vous devez fournir vos clés Compte AWS d'accès et un code valide provenant du dispositif MFA du compte pour supprimer définitivement une version d'objet ou suspendre ou réactiver le contrôle de version.

Pour utiliser l'authentification multi-facteurs (MFA) avec la gestion des versions, vous activez MFA Delete. Vous ne pouvez pas activer MFA Delete à l'aide de la AWS Management Console. Vous devez utiliser le AWS Command Line Interface (AWS CLI) ou l'API. Pour plus d’informations, consultez Configuration de la fonction Supprimer MFA.

L'exemple suivant active la gestion des versions sur un compartiment S3.

aws s3api put-bucket-versioning --bucket DOC-EXAMPLE-BUCKET1 --versioning-configuration Status=Enabled

L'exemple suivant active la gestion des versions S3 et la fonction Supprimer l'authentification multifactorielle (MFA) sur un compartiment.

aws s3api put-bucket-versioning --bucket DOC-EXAMPLE-BUCKET1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SERIAL 123456"
Note

L'utilisation de la fonction Supprimer MFA nécessite un périphérique d'authentification physique ou virtuel approuvé. Pour en savoir plus sur l'utilisation de la fonction Supprimer MFA dans Amazon S3, veuillez consulter Configuration de la fonction Supprimer MFA.

Pour plus d'informations sur l'activation du versionnement à l'aide du AWS CLI, consultez put-bucket-versioningla référence des AWS CLI commandes.

Les exemples suivants activent le contrôle de version sur un compartiment, puis récupèrent le statut de version à l'aide du AWS SDK for Java et du. AWS SDK for .NET Pour plus d'informations sur l'utilisation d'autres kits SDK AWS , consultez le Centre pour développeurs AWS.

.NET

Pour obtenir des informations sur la façon de créer et de tester un exemple pratique, consultez Exécution des exemples de code .NET Amazon S3.

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

Pour obtenir des instructions sur la façon de créer et de tester un exemple pratique, consultez Test des exemples de code Java Amazon S3.

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

Pour obtenir des instructions sur la façon de créer et de tester un exemple pratique, consultez À l'aide du AWS SDK for Python (Boto).

L'exemple de code Python suivant crée un compartiment Amazon S3, l'active pour la gestion des versions, et configure un cycle de vie qui fait expirer les versions d'objet anciennes après 7 jours.

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