Création d’un modèle CloudFormation à partir de ressources scannées avec le générateur IaC - AWS CloudFormation

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.

Création d’un modèle CloudFormation à partir de ressources scannées avec le générateur IaC

Cette rubrique explique comment créer des règles à l’aide de la fonctionnalité IaC Generator.

Création d’un modèle à partir de ressources numérisées (console)

Pour créer un modèle de pile à partir de ressources numérisées
  1. Ouvrez la page du générateur iAC de la console CloudFormation.

  2. Dans la barre de navigation située en haut de l’écran, choisissez la Région AWS qui contient les ressources numérisées.

  3. Dans la section Modèles, choisissez Créer un modèle.

  4. Choisissez Démarrer à partir d’un nouveau modèle.

    1. Dans Nom du modèle, saisissez un nom pour le modèle.

    2. (Facultatif) Configurez votre Politique de suppression et Mettez à jour la politique de remplacement.

    3. Choisissez Next pour ajouter des ressources numérisées au modèle.

  5. Pour Ajouter des ressources numérisées, parcourez la liste des ressources numérisées et sélectionnez les ressources que vous souhaitez ajouter à votre modèle. Vous pouvez filtrer les ressources par identifiant de ressource, type de ressource ou balises. Les filtres sont mutuellement inclusifs.

  6. Une fois que vous avez ajouté toutes les ressources nécessaires à votre modèle, sélectionnez Suivant pour quitter la page Ajouter des ressources numérisées et passer à la page Ajouter des ressources associées.

  7. Consultez une liste recommandée de ressources connexes. Les ressources associées, telles que les instances Amazon EC2 et les groupes de sécurité, sont interdépendantes et appartiennent généralement à la même charge de travail. Sélectionnez les ressources connexes que vous souhaitez inclure dans le modèle généré.

    Note

    Nous vous suggérons d’ajouter toutes les ressources associées à ce modèle.

  8. Passez en revue les détails du modèle, les ressources numérisées et les ressources associées.

  9. Choisissez Créer un modèle pour quitter la page Révision et création et créer le modèle.

Création d’un modèle à partir de ressources numérisées (AWS CLI)

Pour créer un modèle de pile à partir de ressources numérisées
  1. Utilisez la commande list-resource-scan-resources pour répertorier les ressources trouvées lors de l’analyse, en spécifiant éventuellement l’option permettant de limiter la sortie --resource-identifier. Pour l’option --resource-scan-id, remplacez l’exemple d’ARN par l’ARN réel.

    aws cloudformation list-resource-scan-resources \ --resource-scan-id arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60 \ --resource-identifier MyApp

    Voici un exemple de réponse, où ManagedByStack indique si CloudFormation gère déjà la ressource. Copiez la sortie. Vous en aurez besoin à l'étape suivante.

    { "Resources": [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" }, "ManagedByStack": false }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" }, "ManagedByStack": false } ] }

    Pour obtenir une description des champs dans la sortie, consultez ScannedResource dans la référence API AWS CloudFormation.

  2. Utilisez la commande cat pour stocker les types de ressources et les identifiants dans un fichier JSON nommé resources.json dans votre répertoire personnel. Voici un exemple de JSON basé sur l’exemple de sortie de l’étape précédente.

    $ cat > resources.json [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" } }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" } } ]
  3. Utilisez la commande list-resource-scan-related-resources, avec le fichier resources.json que vous avez créé, pour répertorier les ressources associées à vos ressources analysées.

    aws cloudformation list-resource-scan-related-resources \ --resource-scan-id arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60 \ --resources file://resources.json

    Voici un exemple de réponse, où ManagedByStack indique si CloudFormation gère déjà la ressource. Ajoutez ces ressources au fichier JSON créé à l’étape précédente. Vous aurez besoin de créer votre modèle.

    { "RelatedResources": [ { "ResourceType": "AWS::EKS::Nodegroup", "ResourceIdentifier": { "NodegroupName": "MyAppNodegroupName" }, "ManagedByStack": false }, { "ResourceType": "AWS::IAM::Role", "ResourceIdentifier": { "RoleId": "arn:aws::iam::account-id:role/MyAppIAMRole" }, "ManagedByStack": false } ] }

    Pour obtenir une description des champs dans la sortie, consultez ScannedResource dans la référence API AWS CloudFormation.

    Note

    La liste de ressources en entrée ne peut pas dépasser une longueur de 100. Pour répertorier les ressources associées pour plus de 100 ressources, exécutez la commande list-resource-scan-related-resources par lots de 100 et consolidez les résultats.

    Sachez que la sortie peut contenir des ressources dupliquées dans la liste.

  4. Utilisez la commande create-generated-template pour créer un nouveau modèle de pile, comme suit, avec les modifications suivantes :

    • Remplacez us-east-1 par le Région AWS qui contient les ressources numérisées.

    • Remplacez MyTemplate par le nom du modèle à créer.

    aws cloudformation create-generated-template --region us-east-1 \ --generated-template-name MyTemplate \ --resources file://resources.json

    Voici un exemple de fichier resources.json.

    [ { "ResourceType": "AWS::EKS::Cluster", "LogicalResourceId":"MyCluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" } }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "LogicalResourceId":"MyASG", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" } }, { "ResourceType": "AWS::EKS::Nodegroup", "LogicalResourceId":"MyNodegroup", "ResourceIdentifier": { "NodegroupName": "MyAppNodegroupName" } }, { "ResourceType": "AWS::IAM::Role", "LogicalResourceId":"MyRole", "ResourceIdentifier": { "RoleId": "arn:aws::iam::account-id:role/MyAppIAMRole" } } ]

    Si elle réussit, cette commande renvoie ce qui suit.

    { "Arn": "arn:aws:cloudformation:region:account-id:generatedtemplate/7fc8512c-d8cb-4e02-b266-d39c48344e48", "Name": "MyTemplate" }