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
Cette rubrique explique comment importer des fichiers existants AWS des ressources dans une pile existante en les décrivant dans un modèle. Pour plutôt rechercher 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, voirGénérez des modèles à partir de ressources existantes avec le générateur IaC.
Prérequis
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
-
Ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/
. -
Dans la liste des piles, choisissez la pile à partir de laquelle vous souhaitez récupérer le modèle.
-
Dans le volet des détails de la pile, choisissez l'onglet Modèle, puis choisissez Copier dans le presse-papiers.
-
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.
-
l'identifiant unique de la ressource, tel que le nom de la ressource. Pour de plus amples informations, veuillez consulter Identifiants de ressources.
-
Rubriques
Exemple de modèle
Dans cette procédure pas à pas, nous supposons que vous utilisez l'exemple de modèle suivant, appeléTemplateToImport.json
, qui spécifie deux tables DynamoDB. ServiceTable
fait actuellement partie de la pile et GamesTable
constitue 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
Note
Le AWS CloudFormation la 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 plugin AWS Command Line Interface pour importer des ressources utilisant la fonction intrinsèque Fn : :Transform.
Connectez-vous au AWS Management Console et ouvrez le AWS CloudFormation console sur https://console.aws.amazon.com/cloudformation.
-
Sur la page Piles choisissez la pile dans laquelle vous souhaitez importer des ressources.
-
Choisissez Stack actions (Actions de pile), puis Import resources into stack (Importer les ressources dans la pile).
-
Vérifiez la page Import overview (Aperçu de l'importation) puis choisissez Suivant.
-
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, 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.
-
-
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 ressource
AWS::DynamoDB::Table
peut être identifiée à l'aide de la propriétéTableName
. -
Sous Identifier value (Valeur de l'identifiant), tapez la valeur réelle de la propriété. Par exemple, la valeur de
TableName
pour la ressourceGamesTable
dans l'exemple de modèle est
.Games
-
Choisissez Suivant.
-
-
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.
-
À propos de la révision
stack-name
page, 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 Configurer les options de pile.La page Événements de la pile s'affiche.
-
(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 la dérive, consultezDétectez la dérive sur l'ensemble d'une CloudFormation pile.
-
(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, consultezRésoudre l'écart avec une opération d'importation.
Importez une ressource existante dans une pile à l'aide du AWS CLI
-
Pour savoir quelles propriétés identifient chaque type de ressource dans le modèle, exécutez la get-template-summary commande en spécifiant le S3 URL du modèle. Par exemple, la ressource
AWS::DynamoDB::Table
peut être identifiée à l'aide de la propriétéTableName
. Pour la ressourceGamesTable
de l'exemple de modèle, la valeur deTableName
estGames
. 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 ressources.
-
Composez une liste des ressources réelles à importer et de leurs identifiants uniques dans le format de JSON chaîne suivant.
[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]
Vous pouvez également spécifier les paramètres JSON formatés dans un fichier de configuration.
Par exemple, pour importer
GamesTable
, vous pouvez créer unResourcesToImport.txt
fichier contenant la configuration suivante.[ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier": { "TableName":"Games" } } ]
-
Pour créer un ensemble de modifications, utilisez la create-change-set commande suivante et remplacez le texte de l'espace réservé. Pour l’option
--change-set-type
, indiquez une valeur deIMPORT
. Pour l'--resources-to-import
option, remplacez la JSON chaîne d'échantillon par la JSON chaîne que vous venez de créer.aws cloudformation create-change-set \ --stack-name
TargetStack
--change-set-nameImportChangeSet
\ --change-set-typeIMPORT
\ --template-urlhttps://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 supporte pas l'intégration en ligne. YAML Les conditions requises pour éviter les guillemets dans la JSON chaîne varient en fonction de votre terminal. Pour plus d'informations, consultez la section Utilisation de guillemets dans les chaînes du AWS Command Line Interface Guide de l'utilisateur.Vous pouvez également utiliser un fichier URL comme entrée pour l'
--resources-to-import
option, comme indiqué dans l'exemple suivant.--resources-to-import
file://ResourcesToImport.txt
-
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-nameTargetStack
-
Pour lancer l'ensemble de modifications et importer les ressources, utilisez la execute-change-set commande 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 Configurer les options de pile. 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-nameTargetStack
-
(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 la dérive, consultezDétectez la dérive sur l'ensemble d'une CloudFormation pile.-
Exécutez la détection de dérive sur la pile spécifiée.
aws cloudformation detect-stack-drift --stack-name
TargetStack
En cas de succès, cette commande renvoie l'exemple de sortie suivant.
{ "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }
-
Afficher la progression d'une opération de détection de dérive pour l'ID de détection de dérive de pile spécifié.
aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id
624af370-311a-11e8-b6b7-500cexample
-
Affichez les informations de dérive pour les ressources dont la dérive a été vérifiée dans la pile spécifiée.
aws cloudformation describe-stack-resource-drifts --stack-name
TargetStack
-
-
(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, consultezRésoudre l'écart avec une opération d'importation.