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

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 d’activation de la gestion des versions sur un compartiment à l’aide de la console, de l’API REST, des kits SDK AWS et de l’AWS Command Line Interface (AWS CLI).

Note

Après avoir activé la gestion des versions sur un compartiment pour la première fois, la propagation complète de la modification dans le système S3 peut prendre jusqu’à 15 minutes. Pendant ce temps, les demandes GET d’objets créés ou mis à jour après l’activation de la gestion des versions peuvent entraîner des erreurs HTTP 404 NoSuchKey. 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. Cette période d’attente permet d’éviter les problèmes potentiels liés à la visibilité des objets et au suivi de la gestion des versions.

Pour plus d’informations sur la gestion des versions S3, consultez Conservation de plusieurs versions d’objets grâce à la gestion des versions S3. Pour en savoir plus sur l’utilisation d’objets se trouvant dans un compartiment dont la gestion des versions est activée, consultez 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 versions qui lui est associée. (Pour plus d’informations, consultez Options de configuration des compartiments à usage général.) 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 du statut sur Suspended.

Le propriétaire du compartiment et tous les utilisateurs autorisés peuvent activer la gestion des versions. Le propriétaire du compartiment est le Compte AWS qui a créé le compartiment (le compte racine). Pour en savoir plus sur les autorisations, consultez Gestion des identités et des accès 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, de la AWS CLI et des kits SDK AWS.

Procédez comme suit pour utiliser la AWS Management Console pour activer la gestion des versions sur un compartiment S3.

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

  2. Dans le volet de navigation de gauche, choisissez Compartiments à usage général.

  3. Dans la liste de compartiments, choisissez le nom du compartiment pour lequel vous souhaitez activer la gestion des versions.

  4. Choisissez Propriétés.

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

  6. Choisissez Interrompre ou Activer, puis Enregistrer les modifications.

Note

Vous pouvez utiliser l’authentification multifacteur (MFA) AWS avec la gestion des versions. Lorsque vous utilisez l’authentification multifacteur (MFA) avec la gestion des versions, vous devez fournir les clés d’accès de votre Compte AWS et un code valide à partir de l’appareil MFA du compte afin de supprimer définitivement la version d’un objet ou d’interrompre ou réactiver la gestion des versions.

Pour utiliser l’authentification multifactorielle (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 l’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 à usage général S3.

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

L’exemple suivant active la gestion des versions S3 et la fonction de suppression de l’authentification multifactorielle (MFA) sur un compartiment pour un dispositif MFA physique. Pour les dispositifs MFA physiques, dans le paramètre --mfa, transmettez une concaténation du numéro de série du dispositif MFA, d’un espace et de la valeur affichée sur votre dispositif d’authentification.

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

L’exemple suivant active la gestion des versions S3 et la fonction de suppression de l’authentification multifactorielle (MFA) sur un compartiment pour un dispositif MFA virtuel. Pour les dispositifs MFA virtuels, dans le paramètre --mfa, transmettez une concaténation de l’ARN du dispositif MFA, d’un espace et de la valeur affichée sur votre dispositif d’authentification.

aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "arn:aws:iam::account-id:mfa/root-account-mfa-device 123789"
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, consultez Configuration de la fonction Supprimer MFA.

Pour plus d’informations sur l’activation de la gestion des versions à l’aide de l’AWS CLI, consultez put-bucket-versioning dans la Référence des commandes de l’AWS CLI.

Les exemples suivants activent la gestion des versions sur un compartiment, puis récupèrent l’état de la gestion des versions à l’aide du AWS SDK pour Java et du kit AWS SDK pour .NET. Pour en savoir plus sur l’utilisation d’autres kits AWS SDK, consultez le Centre pour développeurs AWS.

.NET

Pour de plus amples informations sur la configuration et l’exécution des exemples de code, consultez Mise en route avec le kit AWS SDK pour .NET dans le Guide du développeur AWS SDK pour .NET.

using System; using Amazon.S3; using Amazon.S3.Model; namespace s3.amazon.com.rproxy.govskope.ca.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 les instructions pour la création et le test d’un exemple pratique, consultez Démarrer dans le Guide du développeur AWS SDK pour Java.

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

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