Créez un CloudFormation modèle à 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éez un CloudFormation modèle à partir de ressources scannées avec le générateur IaC

Cette rubrique explique comment créer un modèle à partir de ressources scannées à l'aide de la fonction de génération IaC.

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 CloudFormation console.

  2. Dans la barre de navigation en haut de l'écran, choisissez 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 votre 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. Lorsque vous avez ajouté toutes les ressources nécessaires à votre modèle, choisissez 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 EC2 instances Amazon 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éez 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 list-resource-scan-resourcescommande pour répertorier les ressources trouvées lors de l'analyse, en spécifiant éventuellement l'--resource-identifieroption permettant de limiter le résultat. Pour l'--resource-scan-idoption, remplacez l'échantillon ARN par l'échantillon réelARN.

    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, qui ManagedByStack indique si CloudFormation la ressource est déjà gérée. 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 une description des champs de la sortie, voir ScannedResourcedans AWS CloudFormation APIRéférence.

  2. Utilisez la cat commande pour stocker les types de ressources et les identificateurs dans un JSON fichier nommé resources.json dans votre répertoire personnel. L'exemple suivant est 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, ainsi que le resources.json fichier que vous avez créé, pour répertorier les ressources associées à vos ressources numérisé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, qui ManagedByStack indique si CloudFormation la ressource est déjà gérée. Ajoutez ces ressources au JSON fichier que vous avez créé à l'étape précédente. Vous en aurez besoin pour 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 une description des champs de la sortie, voir ScannedResourcedans AWS CloudFormation APIRéférence.

    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 list-resource-scan-related-resources commande 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 create-generated-templatecommande pour créer un nouveau modèle de pile, comme suit, avec les modifications suivantes :

    • us-east-1Remplacez par 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" } } ]

    En cas de succès, cette commande renvoie ce qui suit.

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