

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.

# Résoudre l'écart avec une opération d'importation
<a name="resource-import-resolve-drift"></a>

Dans certains cas, la configuration d'une ressource peut s'écarter de sa configuration prévue ; vous pouvez alors souhaiter accepter la nouvelle configuration comme configuration prévue. Dans la plupart des cas, vous pouvez résoudre les résultats de l’écart en mettant à jour la définition de ressource dans le modèle de pile avec une nouvelle configuration, puis effectuer une mise à jour de pile. Toutefois, si la nouvelle configuration met à jour une propriété de ressource qui nécessite un remplacement, la ressource sera recréée lors de la mise à jour de la pile. Si vous souhaitez conserver la ressource existante, vous pouvez utiliser la fonction d'importation de ressource pour mettre à jour la ressource et résoudre les résultats de l'écart sans provoquer le remplacement de la ressource.

La résolution de l'écart d'une ressource par le biais d'une opération d'importation se compose des étapes de base suivantes :
+ [Ajoutez un DeletionPolicy attribut, défini sur Conserver, à la ressource](#resource-import-resolve-drift-console-step-01-update-stack). Cela garantit que la ressource existante est conservée et non supprimée lorsqu’elle est retirée de la pile.
+ [Retirez la ressource du modèle et exécutez une opération de mise à jour de la pile](#resource-import-resolve-drift-console-step-02-remove-drift). La ressource est retirée de la pile, mais n’est pas supprimée.
+ [Décrivez l’état réel de la ressource dans le modèle de pile, puis réimportez la ressource existante dans la pile](#resource-import-resolve-drift-console-step-03-update-template). La ressource est à nouveau ajoutée dans la pile et les différences de propriété qui causaient les résultats de l’écart sont résolues.

Pour plus d’informations sur l’importation de ressources, voir [Importation manuelle de AWS ressources dans une CloudFormation pile](import-resources-manually.md). Pour obtenir la liste des ressources qui prennent en charge l’importation, consultez [Prise en charge des types de ressources](resource-import-supported-resources.md).

Dans cet exemple, nous utilisons le modèle suivant, nommé `templateToImport.json`.

------
#### [ Example JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
         "ServiceTable":{
           "Type":"AWS::DynamoDB::Table",
           "Properties":{
              "TableName":"Service",
              "AttributeDefinitions":[
                 {
                    "AttributeName":"key",
                    "AttributeType":"S"
                 }
              ],
              "KeySchema":[
                 {
                    "AttributeName":"key",
                    "KeyType":"HASH"
                 }
              ],
              "BillingMode": "PROVISIONED",
              "ProvisionedThroughput":{
                 "ReadCapacityUnits":5,
                 "WriteCapacityUnits":1
              }
           }
        },
        "GamesTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "TableName": "Games",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        }
    }
}
```

------
#### [ Example YAML ]

```
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
  ServiceTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Service
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
  GamesTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Games
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
```

------

Dans cet exemple, supposons qu'un utilisateur a modifié une ressource en dehors de CloudFormation. Après avoir exécuté la détection de l'écart, nous avons découvert que `GamesTable` a été modifié `BillingMode` en `PAY_PER_REQUEST`. Pour plus d’informations sur la détection d’écart, voir [Détectez les modifications de configuration non gérées apportées aux piles et aux ressources grâce à la détection des écarts](using-cfn-stack-drift.md).

![Les résultats de l'écart affichent les résultats attendus et réels dans la console.](http://docs.aws.amazon.com/fr_fr/AWSCloudFormation/latest/UserGuide/images/drift-results-gamestable.png)


Notre pile est maintenant obsolète, nos ressources sont actives, mais nous voulons préserver la configuration de ressources prévue. Pour ce faire, nous pouvons résoudre l'écart via une opération d'importation, sans interrompre les services.

## Résolvez la dérive avec une opération d'importation à l'aide de la CloudFormation console
<a name="resource-import-resolve-drift-console"></a>

### Étape 1. Mettre à jour la pile avec la politique de suppression Retain
<a name="resource-import-resolve-drift-console-step-01-update-stack"></a>

**Pour mettre à jour la pile à l’aide d’un attribut `DeletionPolicy` avec l’option `Retain`**

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

1. Sur la page **Stacks (Piles)** choisissez la pile qui a fait l’objet de l’écart.

1. Choisissez **Update (Mettre à jour)**, puis **Replace current template (Remplacer le modèle actuel)** dans le volet des détails de la pile.

1. Dans la page **Specify template (Spécifier un modèle)**, indiquez votre modèle mis à jour contenant l'attribut `DeletionPolicy` avec l'option `Retain` via une des méthodes suivantes :
   + Choisissez **Amazon S3 URL (URL Amazon S3)**, puis spécifiez l'URL de votre modèle dans la zone de texte.
   + Choisissez **Upload a template file (Charger un fichier de modèle)**, puis recherchez votre modèle.

   Ensuite, choisissez **Suivant**.

1. Vérifiez la page **Specify stack details (Spécifier les détails de la pile)** et choisissez **Next (Suivant)**.

1. Vérifiez la page **Configure stack options (Configurer les options de la pile)** et choisissez **Next (Suivant)**.

1. Sur la {{stack-name}} page de **révision**, choisissez **Update stack**.

*Résultats* : Sur la page **Events (Événements)** de votre pile, le statut est `UPDATE_COMPLETE`.

Pour résoudre le problème de dérive lors d'une opération d'importation, sans interrompre les services, spécifiez a `Retain` [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html)pour les ressources que vous souhaitez supprimer de votre pile. Dans l'exemple suivant, nous avons ajouté un [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html)attribut, défini sur`Retain`, à la `GamesTable` ressource.

------
#### [ Example JSON ]

```
    "GamesTable": {
        "Type": "AWS::DynamoDB::Table",
        "DeletionPolicy": "Retain",
        "Properties": {
            "TableName": "Games",
```

------
#### [ Example YAML ]

```
  GamesTable:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Retain
    Properties:
      TableName: Games
```

------

### Étape 2. Retirer les ressources présentant des écarts, les paramètres associés et les sorties
<a name="resource-import-resolve-drift-console-step-02-remove-drift"></a>

**Pour retirer les ressources présentant des écarts, les paramètres associés et les sorties**

1. Choisissez **Update (Mettre à jour)**, puis **Replace current template (Remplacer le modèle actuel)** dans le volet des détails de la pile.

1. Dans la page **Specify template (Spécifier un modèle)**, indiquez à votre modèle mis à jour ses ressources, ses paramètres associés et ses sorties supprimées du modèle de pile à l’aide de l’une des méthodes suivantes :
   + Choisissez **Amazon S3 URL (URL Amazon S3)**, puis spécifiez l'URL de votre modèle dans la zone de texte.
   + Choisissez **Upload a template file (Charger un fichier de modèle)**, puis recherchez votre modèle.

   Ensuite, choisissez **Suivant**.

1. Vérifiez la page **Specify stack details (Spécifier les détails de la pile)** et choisissez **Next (Suivant)**.

1. Vérifiez la page **Configure stack options (Configurer les options de la pile)** et choisissez **Next (Suivant)**.

1. Sur la {{stack-name}} page de **révision**, choisissez **Update stack**.

*Résultats* : L’**ID logique** `GamesTable` a un statut `DELETE_SKIPPED` sur la page **Events (Événements)** de votre pile.

Attendez que l'opération de mise à jour de la pile soit CloudFormation terminée. Une fois l’opération de mise à jour de la pile terminée, supprimez la ressource, les paramètres associés et les sorties du modèle de pile. Ensuite, importez le modèle mis à jour. Lorsque ces actions ont été effectuées, l'exemple de modèle ressemble à ce qui suit.

------
#### [ Example JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
         "ServiceTable":{
           "Type":"AWS::DynamoDB::Table",
           "Properties":{
              "TableName":"Service",
              "AttributeDefinitions":[
                 {
                    "AttributeName":"key",
                    "AttributeType":"S"
                 }
              ],
              "KeySchema":[
                 {
                    "AttributeName":"key",
                    "KeyType":"HASH"
                 }
              ],
              "BillingMode": "PROVISIONED",
              "ProvisionedThroughput":{
                 "ReadCapacityUnits":5,
                 "WriteCapacityUnits":1
              }
           }
        }
    }
}
```

------
#### [ Example YAML ]

```
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
  ServiceTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Service
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
```

------

### Étape 3. Mettre à jour le modèle afin qu'il corresponde à l'état réel de vos ressources
<a name="resource-import-resolve-drift-console-step-03-update-template"></a>

**Pour mettre à jour le modèle afin qu'il corresponde à l'état réel des ressources**

1. Pour importer le modèle mis à jour, choisissez **Stack actions (Actions de la pile)** puis **Import resources into stack (Importer des ressources dans la pile)**.  
![Option Import resources into stack (Importer les ressources dans la pile) dans la console.](http://docs.aws.amazon.com/fr_fr/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

1. Consultez la page **Import overview (Vue d'ensemble de l'importation)** pour obtenir la liste des éléments que vous devez fournir dans le cadre de cette opération, puis choisissez **Next (Suivant)**.

1. Dans la page **Specify template (Spécifier le modèle)** indiquez votre modèle mis à jour via une des méthodes suivantes :
   + Choisissez **Amazon S3 URL (URL Amazon S3)**, puis spécifiez l'URL de votre modèle dans la zone de texte.
   + Choisissez **Upload a template file (Charger un fichier de modèle)**, puis recherchez votre modèle.

   Ensuite, choisissez **Suivant**.

1. Dans la page **Identify resources (Identifier les ressources)**, identifiez chaque ressource cible. Pour de plus amples informations, veuillez consulter [Identifiants de ressource](import-resources-manually.md#resource-import-identifiers-unique-ids).

   1. Sous **Identifier property (Propriété de l'identifiant)**, choisissez le type d'identifiant de ressource. Par exemple, la propriété `TableName` identifie la ressource `AWS::DynamoDB::Table`.

   1. Sous **Identifier value (Valeur de l'identifiant)**, entrez la valeur réelle de la propriété. Dans l'exemple de modèle, `TableName` pour la ressource `GamesTable` est `Games`.

   1. Choisissez **Suivant**.

1. Consultez la page **Specify stack details (Spécifier les détails de la pile)**, puis choisissez **Next (Suivant)**.

1. Dans la page **Import overview (Aperçu de l'importation)**, vérifiez les ressources importées, puis choisissez **Import resources (Importer les ressources)**. Le type de ressource `AWS::DynamoDB::Table` sera à nouveau importé dans votre pile.

*Résultats*: Dans cet exemple, nous avons résolu l'écart de ressource via une opération d'importation, sans interrompre les services. Vous pouvez vérifier la progression d'une action d'importation dans la CloudFormation console, dans l'onglet Événements. Les ressources importées auront un état `IMPORT_COMPLETE` suivi d'un statut `CREATE_COMPLETE` avec **Resource import complete (Importation de ressource terminée)** comme raison du statut.

Attendez que l'opération de mise à jour de la pile soit CloudFormation terminée. Une fois l’opération de mise à jour de la pile terminée, mettez à jour votre modèle de sorte qu’il corresponde à l’état de l’écart réel de vos ressources. Par exemple, `BillingMode` sera défini sur `PAY_PER_REQUEST`, et `ReadCapacityUnits` et `WriteCapacityUnits` seront définis sur `0`.

------
#### [ Example JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
         "ServiceTable":{
           "Type":"AWS::DynamoDB::Table",
           "Properties":{
              "TableName":"Service",
              "AttributeDefinitions":[
                 {
                    "AttributeName":"key",
                    "AttributeType":"S"
                 }
              ],
              "KeySchema":[
                 {
                    "AttributeName":"key",
                    "KeyType":"HASH"
                 }
              ],
              "BillingMode": "PROVISIONED",
              "ProvisionedThroughput":{
                 "ReadCapacityUnits":5,
                 "WriteCapacityUnits":1
              }
           }
        },
        "GamesTable": {
            "Type": "AWS::DynamoDB::Table",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "Games",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PAY_PER_REQUEST",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 0,
                    "WriteCapacityUnits": 0
                }
            }
        }
    }
}
```

------
#### [ Example YAML ]

```
AWSTemplateFormatVersion: 2010-09-09
Description: Import test
Resources:
  ServiceTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: Service
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PROVISIONED
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 1
  GamesTable:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Retain
    Properties:
      TableName: Games
      AttributeDefinitions:
        - AttributeName: key
          AttributeType: S
      KeySchema:
        - AttributeName: key
          KeyType: HASH
      BillingMode: PAY_PER_REQUEST
      ProvisionedThroughput:
        ReadCapacityUnits: 0
        WriteCapacityUnits: 0
```

------