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
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. 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. 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. 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, consultezImporter AWS des ressources dans une CloudFormation pile avec une importation de ressources. Pour obtenir la liste des ressources qui prennent en charge l'importation, consultezSupport des types de ressources.
Dans cet exemple, nous utilisons le modèle suivant, nommé templateToImport.json
.
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 de dérive, consultezDétectez les modifications de configuration non gérées apportées aux piles et aux ressources grâce à la détection de dérive.
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
Étape 1. Mettre à jour la pile avec la politique de suppression Retain
Pour mettre à jour la pile à l'aide d'un attribut DeletionPolicy
avec l'option Retain
Connectez-vous à la AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.
-
Sur la page Stacks (Piles) choisissez la pile qui a fait l'objet de l'écart.
-
Choisissez Update (Mettre à jour), puis Replace current template (Remplacer le modèle actuel) dans le volet des détails de la pile.
-
Dans la page Specify template (Spécifier un modèle), indiquez votre modèle mis à jour contenant l'attribut
DeletionPolicy
avec l'optionRetain
via une des méthodes suivantes :-
Choisissez Amazon S3 URL, puis spécifiez le modèle correspondant URL à 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.
-
-
Vérifiez la page Specify stack details (Spécifier les détails de la pile) et choisissez Next (Suivant).
-
Vérifiez la page Configure stack options (Configurer les options de la pile) et choisissez Next (Suivant).
-
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
DeletionPolicypour les ressources que vous souhaitez supprimer de votre pile. Dans l'exemple suivant, nous avons ajouté un DeletionPolicyattribut, défini surRetain
, à la GamesTable
ressource.
Étape 2. Retirer les ressources présentant des écarts, les paramètres associés et les sorties
Pour retirer les ressources présentant des écarts, les paramètres associés et les sorties
-
Choisissez Update (Mettre à jour), puis Replace current template (Remplacer le modèle actuel) dans le volet des détails de la pile.
-
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, puis spécifiez le modèle correspondant URL à 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.
-
-
Vérifiez la page Specify stack details (Spécifier les détails de la pile) et choisissez Next (Suivant).
-
Vérifiez la page Configure stack options (Configurer les options de la pile) et choisissez Next (Suivant).
-
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.
Étape 3. Mettre à jour le modèle afin qu'il corresponde à l'état réel de vos ressources
Pour mettre à jour le modèle afin qu'il corresponde à l'état réel des ressources
-
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).
-
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).
-
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, puis spécifiez le modèle correspondant URL à 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.
-
-
Dans la page Identify resources (Identifier les ressources), identifiez chaque ressource cible. Pour de plus amples informations, veuillez consulter Identifiants de ressources.
-
Sous Identifier property (Propriété de l'identifiant), choisissez le type d'identifiant de ressource. Par exemple, la propriété
TableName
identifie la ressourceAWS::DynamoDB::Table
. -
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 ressourceGamesTable
estGames
. -
Choisissez Suivant.
-
-
Consultez la page Specify stack details (Spécifier les détails de la pile), puis choisissez Next (Suivant).
-
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
.