Cloud

Console to Code : Automatisation IAC du prototypage à la production

  • 11 octobre 2024
  • 5 min. à lire
Découvrez comment utiliser Console to Code d'AWS pour générer automatiquement du code d'infrastructure à partir des actions de la console

AWS annonce la disponibilité générale de Console to Code, une fonctionnalité qui permet de convertir automatiquement les actions effectuées dans la console AWS en code réutilisable. Cet outil promet de simplifier le passage du prototypage à la production, offrant aux équipes DevOps un moyen efficace d'accélérer leurs déploiements tout en maintenant les meilleures pratiques. Pari tenu ?

L’automatisation des processus dans le cloud est devenue un incontournable pour les équipes qui cherchent à optimiser leurs opérations et à réduire les erreurs humaines.

Et c’est précisement dans ce contexte, que AWS annonce la disponibilité générale de Console to Code, une fonctionnalité alimentée par Amazon Q Developer. Cet outil vise à combler le fossé entre le prototypage dans la console AWS et le déploiement de code en production, offrant ainsi une solution aux défis de productivité et de cohérence rencontrés par les équipes de DevOps.

Concepts de base (niveau 101)

Console to Code est une fonctionnalité intégrée à Amazon Q Developer qui permet de convertir automatiquement les actions effectuées dans la console AWS en code réutilisable. Si il ne fallait en retenir que les éléments fondamentaux, en voici une liste :

  1. Enregistrement des actions : L’outil capture les opérations réalisées dans la console AWS.

  2. Génération de code : À partir de ces actions, Console to Code produit du code dans différents formats, notamment CLI, CloudFormation et CDK (Cloud Development Kit).

  3. Services supportés : Actuellement, la fonctionnalité est disponible pour Amazon EC2, Amazon VPC et Amazon RDS dans les toutes les régions.

  4. Niveaux de service : Console to Code propose un niveau gratuit et un niveau Pro, chacun avec des limites spécifiques sur la génération de code. (cf. Limites importantes à connaître)

Concepts avancés (niveau 201)

Pour approfondir la compréhension de Console to Code, examinons quelques aspects plus techniques :

  1. Intégration multi-services : Console to Code peut enregistrer des actions à travers plusieurs services AWS dans une seule session, permettant de capturer des workflows complexes.

  2. Génération de code basée sur l’IA : La fonctionnalité utilise l’intelligence artificielle générative pour produire du code suivant les meilleures pratiques d’AWS. Si il y a bien un avantage à Amazon Q, c’est bien celui de connaître la maison comme sa poche.

  3. Formats de code supportés :

    • CDK : Java, Python, TypeScript
    • CloudFormation : JSON, YAML
  4. Gestion des permissions : L’utilisation de Console to Code nécessite des autorisations spécifiques, notamment :

    • Permissions pour utiliser Amazon Q sur les sites AWS
    • Permissions pour effectuer les actions à enregistrer
    • Permissions pour utiliser Console to Code lui-même

Mise en œuvre pratique

Voici un exemple pratique d’utilisation de Console to Code pour générer du code CLI à partir d’actions dans la console EC2 :

  1. Accédez à la console Amazon EC2.

  2. Repérez le widget AWS Console-to-Code sur le côté droit de l’écran et cliquez sur “Start recording” pour commencer l’enregistrement.

widget AWS Console-to-Code dans la console

  1. Lancez une instance EC2 en utilisant l’assistant de lancement d’instance dans la console EC2.

  2. Une fois l’instance lancée, cliquez sur Stop pour terminer l’enregistrement.

  3. Dans le tableau Recorded actions, examinez les actions enregistrées. Utilisez la liste déroulante Type pour filtrer les actions d’écriture Write.

  4. Sélectionnez l’action RunInstances et choisissez Copy CLI pour copier la commande AWS CLI correspondante.

Voici un exemple de commande CLI générée par AWS Console-to-Code :

aws ec2 run-instances \
  --image-id "ami-066784287e358dad1" \
  --instance-type "t3.micro" \
  --network-interfaces '{"AssociatePublicIpAddress":true,"DeviceIndex":0,"Groups":["sg-1z1c11zzz1c11zzz1"]}' \
  --credit-specification '{"CpuCredits":"standard"}' \
  --tag-specifications '{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"c2c-demo"}]}' \
  --metadata-options '{"HttpEndpoint":"enabled","HttpPutResponseHopLimit":2,"HttpTokens":"required"}' \
  --private-dns-name-options '{"HostnameType":"ip-name","EnableResourceNameDnsARecord":true,"EnableResourceNameDnsAAAARecord":false}' \
  --count "1"

Cette commande peut être facilement modifiée pour répondre à des besoins spécifiques. Par exemple, vous pouvez ajuster le nombre d’instances à lancer --count 2 ou changer le type d’instance --instance-type "t4.micro".

Pour exécuter cette commande, vous pouvez utiliser AWS CloudShell directement depuis la console AWS. Cela vous permettra de lancer les instances EC2 selon les spécifications définies.

Il est important de noter que l’expérience de génération de code CLI en un clic est basée sur les commandes API utilisées lors de l’exécution des actions dans la console. L’interface utilisateur interactive de Console to Code, avec ses fonctionnalités de démarrage et d’arrêt, permet de délimiter clairement les actions pour le prototypage.

Cette approche offre une transition fluide entre le prototypage dans la console et l’automatisation via le code, facilitant ainsi le processus de développement et de déploiement d’infrastructures AWS.

Limites importantes à connaître

  • Accessibilité et quotas : La génération de code pour les formats AWS CDK et CloudFormation est limitée à 25 générations gratuites par mois. Au-delà, un abonnement Amazon Q Developer est nécessaire.
  • À sa disponibilité générale, AWS Console to Code enregistre uniquement les actions dans les consoles Amazon EC2, Amazon VPC et Amazon RDS.
  • Limitations de session :
    • Le tableau “Recorded actions” dans AWS Console to Code n’affiche que les actions effectuées durant la session en cours dans l’onglet spécifique du navigateur.
    • Les actions des sessions précédentes ou d’autres onglets ne sont pas conservées.
    • Attention : le rafraîchissement de l’onglet du navigateur entraînera la perte de toutes les actions enregistrées.

Meilleures pratiques et pièges courants

Meilleures pratiques :

  1. Utilisez Console to Code pour le prototypage initial, puis affinez le code généré pour la production.
  2. Vérifiez et testez toujours le code généré avant de le déployer en production.
  3. Utilisez des outils de gestion de version pour suivre les modifications apportées au code généré.
  4. Documentez les décisions prises lors de la modification du code généré.

Pièges courants à éviter :

  1. Ne pas supposer que le code généré est parfait ou complet. Il peut nécessiter des ajustements.
  2. Évitez de générer du code pour des configurations complexes sans comprendre les implications. Drame assuré.
  3. **Ne négligez pas la sécurité. **Vérifiez toujours que les bonnes pratiques de sécurité sont appliquées.
  4. Ne vous fiez pas uniquement au code généré pour la documentation. Ajoutez vos propres commentaires et explications.

Avis et perspectives d’aveni sur Console to Code

Console to Code représente une avancée significative dans la simplification du passage du prototypage à la production dans l’environnement AWS. En comblant le fossé entre les actions manuelles dans la console et le code d’infrastructure, cette fonctionnalité offre aux développeurs et aux équipes DevOps un outil puissant pour accélérer leurs workflows et améliorer la cohérence de leurs déploiements. Sur ce point c’est indigablement un bon outil.

Bien que Console to Code ne remplace pas la nécessité de comprendre et de maîtriser les services AWS et les pratiques de code, il fournit un point de départ intéressant pour la création d’infrastructures as code.

La valeur ajouté d’un devops à rédiger de l’IAC à la main peut être discutable et à mesure que la technologie évolue, nous pouvons nous attendre à ce que des outils comme celui-ci jouent un rôle croissant dans la modernisation des pratiques de développement et de déploiement cloud.

Il est préférable de concentrer son jus de cerveau sur la conception d’une architecture optimale répondant précisément aux besoins spécifiques du projet, plutôt que de les consacrer excessivement à la rédaction manuelle d’une infrastructure as code.

L’évolution de Console to Code pourrait inclure :

  1. Extension à d’autres services AWS : On peut s’attendre à ce que la fonctionnalité soit étendue à d’autres services AWS populaires.

  2. Amélioration de l’IA générative : Les capacités de génération de code d’Amazon Q pourraient devenir plus sophistiquées, produisant du code plus optimisé et personnalisé.

  3. Intégration avec d’autres outils DevOps : Une intégration plus poussée avec des outils de CI/CD et de gestion de configuration pourrait être envisagée comme Terraform (ou OpenTofu).

Restons attentifs à ce type d’innovations, en les intégrant judicieusement dans nos processus tout en maintenant une approche critique et réfléchie de la gestion de l’infrastructure cloud.

Nicolas Verlhiac

Nicolas Verlhiac

Full stack software expert | E-commerce & CRM

Nous sommes spécialisés dans la création de solutions technologiques innovantes qui aident les entreprises à rester compétitives et à prospérer.

tracking-thumb