

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.

# Importation de ressources existantes dans une pile
<a name="resource-import-existing-stack"></a>

Cette rubrique explique comment importer AWS des ressources existantes dans une pile existante en les décrivant dans un modèle. Pour rechercher plutôt les ressources existantes et générer automatiquement un modèle que vous pouvez utiliser pour importer des ressources existantes dans un nouveau compte CloudFormation ou les répliquer dans un nouveau compte, voir[Générez des modèles à partir de ressources existantes avec le générateur IaC](generate-IaC.md).

**Conditions préalables**

Avant de commencer, les prérequis suivants doivent être remplis :
+ Un modèle qui décrit l’ensemble de la pile, y compris les ressources qui font déjà partie de la pile et les ressources à importer. Enregistrez le modèle localement ou dans un compartiment Amazon S3. 

  **Pour obtenir une copie du modèle d’une pile en cours d’exécution**

  1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

  1. Dans la liste des piles, choisissez la pile dont vous souhaitez récupérer le modèle.

  1. Dans le volet des détails de la pile, choisissez l’onglet **Modèle**, puis choisissez **Copier dans le presse-papiers**.

  1. Collez le code dans un éditeur de texte pour commencer à ajouter d’autres ressources au modèle.
+ Pour chaque ressource que vous souhaitez importer, incluez les éléments suivants :
  + les propriétés et les valeurs de propriétés qui définissent la configuration actuelle de la ressource.
  + identifiant unique de la ressource, tel que le nom de la ressource. Pour de plus amples informations, veuillez consulter [Identifiants de ressource](import-resources-manually.md#resource-import-identifiers-unique-ids).
  + [l’attribut DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html).

**Topics**
+ [Exemple de modèle](#resource-import-existing-stack-example-template)
+ [Importez une ressource existante dans une pile à l'aide du AWS Management Console](#resource-import-existing-stack-console)
+ [Importez une ressource existante dans une pile à l'aide du AWS CLI](#resource-import-existing-stack-cli)

## Exemple de modèle
<a name="resource-import-existing-stack-example-template"></a>

Dans cette procédure pas à pas, nous partons du principe que vous utilisez le modèle d’exemple suivant, appelé `TemplateToImport.json`, qui spécifie deux tables DynamoDB. `ServiceTable` fait actuellement partie de la pile et `GamesTable` est la table que vous souhaitez importer.

**Note**  
Ce modèle n’est fourni qu’à titre d’exemple. Pour l’utiliser à vos propres fins de test, remplacez les exemples de ressources par des ressources provenant de votre compte. 

```
{
    "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"
                    }
                ],
                "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"
                    }
                ],
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        }
    }
}
```

## Importez une ressource existante dans une pile à l'aide du AWS Management Console
<a name="resource-import-existing-stack-console"></a>

**Note**  
La CloudFormation console ne prend pas en charge l'utilisation de la fonction intrinsèque `Fn::Transform` lors de l'importation de ressources. Vous pouvez utiliser le AWS CLI pour importer les ressources qui utilisent cette `Fn::Transform` fonction.

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 **Piles** choisissez la pile dans laquelle vous souhaitez importer des ressources.

1. Choisissez **Stack actions (Actions de pile)**, puis **Import resources into stack (Importer les 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. Vérifiez la page **Import overview (Aperçu de l'importation)** puis choisissez **Suivant**.

1. Dans la page **Specify template (Spécifier le modèle)** indiquez votre modèle mis à jour à l'aide de l'une des méthodes suivantes, puis choisissez **Suivant**.
   + 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.

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 ressource `AWS::DynamoDB::Table` peut être identifiée à l'aide de la propriété `TableName`.

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

   1. Choisissez **Suivant**.

1. Dans la page **Specify stack details (Spécifier les détails de la pile)**, mettez à jour les paramètres, puis choisissez **Suivant**. Un jeu de modifications est crée automatiquement.
**Note**  
L'opération d'importation échoue si vous modifiez des paramètres existants qui lacent une opération de création, de mise à jour ou de suppression.

1. Sur la *stack-name* page **Révision**, passez en revue les ressources à importer, puis choisissez **Importer des ressources**. Le jeu de modifications créé à la dernière étape est alors automatiquement exécuté. Toutes les balises au niveau de la pile sont appliquées aux ressources importées à ce moment-là. Pour de plus amples informations, veuillez consulter [Configuration des options de pile](cfn-console-create-stack.md#configure-stack-options).

   La page **Événements** de la pile s’affiche.  
![\[Onglet Événements de la console.\]](http://docs.aws.amazon.com/fr_fr/AWSCloudFormation/latest/UserGuide/images/import-events.png)

1. (Facultatif) Exécutez la détection de l’écart sur la pile afin de vous assurer que le modèle et la configuration réelle des ressources importées correspondent. Pour plus d’informations sur la détection de l’écart, voir [Détectez la dérive sur l'ensemble d'une CloudFormation pile](detect-drift-stack.md).

1. (Facultatif) Si vos ressources importées ne correspondent pas aux configurations de modèle attendues, corrigez les configurations de modèle ou mettez directement à jour les ressources. Pour plus d’informations sur l’importation de ressources dérivées, voir [Résoudre l'écart avec une opération d'importation](resource-import-resolve-drift.md).

## Importez une ressource existante dans une pile à l'aide du AWS CLI
<a name="resource-import-existing-stack-cli"></a>

1. Pour savoir quelles propriétés identifient chaque type de ressource dans le modèle, exécutez la commande **get-template-summary** en spécifiant l’URL S3 du modèle. Par exemple, la ressource `AWS::DynamoDB::Table` peut être identifiée à l'aide de la propriété `TableName`. Pour la ressource `GamesTable` de l'exemple de modèle, la valeur de `TableName` est `Games`. Vous aurez besoin de ces informations à l’étape suivante.

   ```
   aws cloudformation get-template-summary \
       --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json
   ```

   Pour de plus amples informations, veuillez consulter [Identifiants de ressource](import-resources-manually.md#resource-import-identifiers-unique-ids).

1. Composez une liste des ressources réelles à importer et de leurs identifiants uniques dans le format de chaîne JSON suivant.

   ```
   [{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]
   ```

   Sinon, vous pouvez spécifier les paramètres au format JSON dans un fichier de configuration. 

   Par exemple, pour importer`GamesTable`, vous pouvez créer un *ResourcesToImport.txt* fichier contenant la configuration suivante.

   ```
   [
     {
         "ResourceType":"AWS::DynamoDB::Table",
         "LogicalResourceId":"GamesTable",
         "ResourceIdentifier": {
           "TableName":"Games"
         }
     }
   ]
   ```

1. Pour créer un ensemble de modifications, utilisez la commande **create-change-set** suivante et remplacez le texte de l’espace réservé. Pour l’option `--change-set-type`, indiquez une valeur de **IMPORT**. Pour l’option `--resources-to-import`, remplacez l’exemple de chaîne JSON par la chaîne JSON que vous venez de créer.

   ```
   aws cloudformation create-change-set \
       --stack-name TargetStack --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json \
       --resources-to-import '[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]'
   ```
**Note**  
`--resources-to-import` ne prend pas en charge le YAML en ligne. Les exigences relatives aux guillemets d’échappement dans la chaîne JSON varient en fonction de votre terminal. Pour plus d’informations, consultez la section [Utilisation des guillemets dans les chaînes de caractères](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) du *Guide de l’utilisateur AWS Command Line Interface *.

   Vous pouvez également utiliser l’URL d’un fichier en entrée pour l’option `--resources-to-import`, comme indiqué dans l’exemple suivant.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

1. Vérifiez le jeu de modifications pour vous assurer que les ressources appropriées seront importées.

   ```
   aws cloudformation describe-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStack
   ```

1. Pour lancer le jeu de modifications et importer les ressources, utilisez la commande **execute-change-set** suivante et remplacez le texte de remplacement. Toutes les balises au niveau de la pile sont appliquées aux ressources importées à ce moment-là. Pour de plus amples informations, veuillez consulter [Configuration des options de pile](cfn-console-create-stack.md#configure-stack-options). Une fois l'opération `(IMPORT_COMPLETE)` terminée, les ressources sont importées avec succès.

   ```
   aws cloudformation execute-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStack
   ```

1. (Facultatif) Exécutez la détection de l’écart sur la pile `IMPORT_COMPLETE` pour vous assurer que le modèle et la configuration réelle des ressources importées correspondent. Pour plus d’informations sur la détection de l’écart, voir [Détectez la dérive sur l'ensemble d'une CloudFormation pile](detect-drift-stack.md).

   1. Exécutez la détection d’écart sur la pile spécifiée.

      ```
      aws cloudformation detect-stack-drift --stack-name TargetStack
      ```

      Si elle aboutit, cette commande renvoie un résultat similaire à ce qui suit.

      ```
      { "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }
      ```

   1. Afficher la progression d’une opération de détection d’écart pour l’ID de détection d’écart de pile spécifié.

      ```
      aws cloudformation describe-stack-drift-detection-status \
          --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample
      ```

   1. Affichez les informations d’écart pour les ressources dont l’écart a été vérifiée dans la pile spécifiée.

      ```
      aws cloudformation describe-stack-resource-drifts --stack-name TargetStack
      ```

1. (Facultatif) Si vos ressources importées ne correspondent pas aux configurations de modèle attendues, corrigez les configurations de modèle ou mettez directement à jour les ressources. Pour plus d’informations sur l’importation de ressources dérivées, voir [Résoudre l'écart avec une opération d'importation](resource-import-resolve-drift.md).