

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.

# Restauration des versions précédentes
<a name="RestoringPreviousVersions"></a>

Vous pouvez utiliser la gestion des versions pour récupérer les versions précédentes d’un objet. Pour ce faire, deux approches sont possibles :
+ La copie d’une version précédente de l’objet dans le même compartiment.

  L’objet copié devient la version actuelle de cet objet et toutes les versions d’objet sont préservées.
+ La suppression définitive de la version actuelle de l’objet.

  Lorsque vous supprimez la version d’objet actuelle, vous transformez la version précédente en version actuelle de cet objet.

Etant donné que toutes les versions d’objet sont préservées, vous pouvez réaliser une version antérieure à la version actuelle en copiant une version spécifique de l’objet dans le même compartiment. Dans le schéma suivant, l’objet source (ID = 111111) est copié dans le même compartiment. Amazon S3 fournit un nouvel ID (88778877) qui devient la version actuelle de l’objet. Le compartiment possède donc la version d’objet originale (111111) et sa copie (88778877). Pour plus d’informations sur l’obtention d’une version précédente, puis son chargement pour en faire la version actuelle, consultez [Récupération des versions d’objets à partir d’un compartiment activé pour la gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RetrievingObjectVersions.html) et [Chargement d’objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

![\[Illustration de la copie d’une version spécifique d’un objet dans le même compartiment pour en faire la version actuelle.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/versioning_COPY2.png)


Une version ultérieure `GET` récupère la version 88778877.

Le schéma suivant illustre comment la suppression de la version actuelle (121212) d’un objet permet à la version précédente (111111) de devenir l’objet actuel. Pour plus d’informations sur la suppression d’un objet, consultez [Suppression d’un objet unique](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html).

![\[Illustration montrant comment la suppression de la version actuelle d’un objet laisse la version précédente devenir l’objet actuel.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/versioning_COPY_delete2.png)


Une version ultérieure `GET` récupère la version 111111.

**Note**  
Pour restaurer des versions d’objets par lots, vous pouvez [utiliser l’opération `CopyObject`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html). L’opération `CopyObject` copie chaque objet spécifié dans le manifeste. Cependant, sachez que les objets ne sont pas nécessairement copiés dans le même ordre que celui dans lequel ils apparaissent dans le manifeste. Pour les compartiments activés pour la gestion des versions, si la préservation de l’ordre des versions actuelles ou anciennes est importante, vous devez d’abord copier toutes les anciennes versions. Ensuite, une fois la première tâche terminée, copiez les versions actuelles dans une tâche ultérieure.

## Pour restaurer les versions d’objets précédentes
<a name="restoring-obj-version-version-enabled-bucket-examples"></a>

Pour plus d'informations sur la restauration d'objets supprimés, consultez [Comment puis-je récupérer un objet Amazon S3 qui a été supprimé dans un compartiment activé pour la gestion des versions ?](https://repost.aws/knowledge-center/s3-undelete-configuration) dans le AWS re:Post Knowledge Center.

### Utilisation de la console S3
<a name="retrieving-object-versions"></a>

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la liste **Buckets** (Compartiments), choisissez le nom du compartiment qui contient l'objet.

1. Dans la liste **Objets**, choisissez le nom de l’objet.

1. Choisissez **Versions**.

   Amazon S3 affiche toutes les versions de l’objet.

1. Sélectionnez la case à cocher en regard de l’**ID de version** des versions que vous souhaitez récupérer.

1. Choisissez **Actions**, choisissez **Télécharger**et enregistrez l’objet.

Vous pouvez également afficher, télécharger et supprimer les versions d’un objet dans le panneau de présentation de l’objet. Pour de plus amples informations, veuillez consulter [Affichage des propriétés d’un objet dans la console Amazon S3](view-object-properties.md).

**Important**  
Vous pouvez annuler la suppression d'un objet uniquement si celui-ci a été supprimé en tant que version la plus récente (version actuelle). Vous ne pouvez pas restaurer une version précédente d’un objet supprimé. Pour de plus amples informations, veuillez consulter [Conservation de plusieurs versions d’objets grâce à la gestion des versions S3](Versioning.md).

### À l'aide du AWS SDKs
<a name="restoring-obj-version-version-enabled-bucket-sdks"></a>

Pour plus d'informations sur l'utilisation des autres AWS SDKs, consultez le [AWS Developer Center](https://aws.amazon.com/code/). 

------
#### [ Python ]

L’exemple de code Python suivant restaure la version précédente d’un objet versionné en supprimant toutes les versions qui sont apparues après la version de restauration spécifiée.

```
def rollback_object(bucket, object_key, version_id):
    """
    Rolls back an object to an earlier version by deleting all versions that
    occurred after the specified rollback version.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket: The bucket that holds the object to roll back.
    :param object_key: The object to roll back.
    :param version_id: The version ID to roll back to.
    """
    # Versions must be sorted by last_modified date because delete markers are
    # at the end of the list even when they are interspersed in time.
    versions = sorted(
        bucket.object_versions.filter(Prefix=object_key),
        key=attrgetter("last_modified"),
        reverse=True,
    )

    logger.debug(
        "Got versions:\n%s",
        "\n".join(
            [
                f"\t{version.version_id}, last modified {version.last_modified}"
                for version in versions
            ]
        ),
    )

    if version_id in [ver.version_id for ver in versions]:
        print(f"Rolling back to version {version_id}")
        for version in versions:
            if version.version_id != version_id:
                version.delete()
                print(f"Deleted version {version.version_id}")
            else:
                break

        print(f"Active version is now {bucket.Object(object_key).version_id}")
    else:
        raise KeyError(
            f"{version_id} was not found in the list of versions for " f"{object_key}."
        )
```

------