Je souhaite corriger l’erreur suivante dans la console AWS CloudFormation : « This template does not include any resources to import. Learn more. »
Brève description
Ce message d’erreur s’affiche lorsque vous utilisez la console CloudFormation pour importer des ressources dans une pile existante créée en dehors de CloudFormation.
Cette erreur peut se produire lorsque vous utilisez la console CloudFormation dans les scénarios suivants :
- La ressource que vous importez possède une clé de condition associée à une condition évaluée comme étant false.
- Vous importez une ressource à l’aide de la fonction intrinsèque Fn::Transform ou la section du modèle de transformation, telle que AWS::Serverless ou AWS::Include.
Pour corriger l’erreur liée aux ressources conditionnelles, la condition spécifiée sous la clé de condition doit être évaluée comme étant true pour la ressource que vous importez.
Pour corriger l’erreur liée à des modèles basés sur des transformations, utilisez l’interface de la ligne de commande AWS (AWS CLI) au lieu de la console AWS CloudFormation.
L’AWS CLI exige que vous fournissiez explicitement des ressources importées dans la commande CloudFormation Create-change-set.
**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface.
Résolution
L’exemple suivant utilise l’AWS CLI pour importer une ressource AWS::ECS::Cluster existante dans une pile CloudFormation :
Resources:
...
ECSCluster2:
Condition: MyCondition
Type: AWS::ECS::Cluster
DeletionPolicy: Retain
Properties:
ClusterName: Cluster2
Remarque : avant de passer aux étapes suivantes, assurez-vous que la condition MyCondition est évaluée comme étant true.
Importation de ressources
Remarque : si la pile ne se trouve pas dans la région AWS par défaut, ajoutez --region dans vos commandes. Vous pouvez également modifier la région par défaut en définissant et en exportant la variable d’environnement AWS_DEFAULT_REGION.
Pour importer les ressources, procédez comme suit :
-
Créez un fichier d’importation de ressources nommé import.txt :
[
{
"ResourceType": "AWS::ECS::Cluster",
"LogicalResourceId":
"ECSCluster2"
,
"ResourceIdentifier": {
"ClusterName":"Cluster2"
}
}
]
-
Pour créer un ensemble de modifications en fonction de votre pile, exécutez la commande create-change-set :
ID=$(aws cloudformation create-change-set --stack-name testStack --change-set-name testSet --resources-to-import file://import.txt --change-set-type IMPORT --template-body file://template.yaml --capabilities CAPABILITY_AUTO_EXPAND --query 'Id' --output text)
Remarque : remplacez testStack par le nom de votre pile et template.yaml par le nom de fichier du modèle CloudFormation. La commande précédente renvoie l’ARN de l’ensemble de modifications et le stocke dans la variable d’environnement ID.
Si votre modèle est basé sur des transformations, vous devez utiliser CAPABILITY_AUTO_EXPAND.
-
(Facultatif) Pour attendre la création de l’ensemble de modifications, exécutez la commande change-set-create-complete :
aws cloudformation wait change-set-create-complete --change-set-name ${ID}
-
Utilisez la console AWS CloudFormation pour afficher l’ensemble de modifications. Ou exécutez la commande describe-change-set :
aws cloudformation describe-change-set --change-set-name ${ID}
-
Pour appliquer l’ensemble de modifications et importer la ressource dans la pile, exécutez la commande execute-change-set :
aws cloudformation execute-change-set --change-set-name ${ID}
-
(Facultatif) Pour vérifier que toutes les propriétés du modèle correspondent à la ressource, utilisez la détection de dérives sur la ressource.
Informations connexes
Importation d’une ressource existante dans une pile à l’aide de l’AWS CLI
Prise en charge par type de ressources