FAQ sur Amazon CodeGuru

Questions d'ordre général

Amazon CodeGuru se compose de deux éléments : Amazon CodeGuru Security et Amazon CodeGuru Profiler. CodeGuru Security est un outil basé sur le machine learning (ML) et l'analyse de programmes qui détecte les failles de sécurité dans le code de votre application. CodeGuru Security analyse également les informations d'identification codées en dur. CodeGuru Profiler optimise les performances des applications fonctionnant en production et identifie les lignes de code les plus onéreuses, ce qui réduit considérablement les coûts opérationnels.

CodeGuru est désormais disponible pour tous. Vous pouvez démarrer maintenant dans la console Amazon CodeGuru.

Pour prendre connaissance des régions AWS prises en charge, veuillez consulter le tableau des régions AWS qui constitue un aperçu de toute l'infrastructure mondiale AWS. Pour en savoir plus, consultez la section Régions et points de terminaison du document Références générales AWS.

Amazon CodeGuru Security

CodeGuru Security est un outil d'analyse de code basé sur le ML et sur l'analyse de programmes qui détecte les failles de sécurité dans le code de votre application.

CodeGuru Security prend actuellement en charge l'analyse de Java, Python, JavaScript, TypeScript, C#, CloudFormation, Terraform, Go et Ruby.

CodeGuru Security détecte les dix principaux problèmes de l'Open Worldwide Application Security Project (OWASP), les 25 principaux problèmes du Common Weakness Enumeration (CWE), l'injection de journaux, les secrets et l'utilisation sécurisée des API et des kits SDK AWS. Consultez la bibliothèque Amazon CodeGuru Detector pour en savoir plus sur les vulnérabilités détectées par la sécurité CodeGuru.
 

Accédez à la console CodeGuru pour intégrer CodeGuru Security à votre cycle de vie de développeur. Vous pouvez l'intégrer dans les outils d'intégration et de diffusion continues (CI/CD), l'analyse des référentiels et les environnements de développement intégrés (IDE).
 

CodeGuru security n'a besoin que d'un accès en lecture seule à votre code afin de générer des recommandations. Votre confiance, votre confidentialité et la sécurité de votre contenu sont notre priorité absolue. Nous mettons en œuvre des contrôles appropriés, notamment le chiffrement en transit, pour empêcher tout accès non autorisé à votre contenu ou sa divulgation et nous assurer que notre utilisation est conforme à nos engagements à votre égard. Nous prenons également en charge les clés KMS du gestionnaire de clientèle (CMCMK) pour le chiffrement. Consultez les questions fréquentes (FAQ) sur la confidentialité des données pour en savoir plus.

Non, CodeGuru Security ne stocke pas votre code source.
 

CodeGuru Security est entraîné à l'aide de modèles d'exploration de règles et de machine learning supervisés qui utilisent une combinaison de régression logistique et de réseaux neuronaux. Par exemple, lors de l'entraînement sur les fuites de données sensibles, il effectue une analyse complète du code pour tous les chemins de code qui utilisent les ressources ou les données sensibles, il crée un ensemble de fonctions qui les représente, puis il les utilise comme entrées pour les modèles de régression logistique et les réseaux neuronaux convolutifs.

CodeGuru Security est intégré à l'analyse de code Amazon Inspector pour Lambda. Des intégrations supplémentaires avec des référentiels et des outils CI/CD seront bientôt disponibles.
 

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler aide les développeurs et les opérateurs informatiques à comprendre facilement le comportement d'exécution de leurs applications, à améliorer les performances et à réduire les coûts d'infrastructure. Amazon CodeGuru Profiler analyse le profil d'exécution de l'application et fournit des recommandations et des visualisations intelligentes qui guident les développeurs sur la manière d'améliorer les performances des parties les plus pertinentes de leur code.

Un groupe de profilage consiste en un regroupement logique créé par vos soins. Il représente les limites d'une application. Par exemple, dans une architecture de microservices, un groupe de profilage regroupe les profils des microservices que vous lui avez attribués et produit un profil pour l’ensemble des microservices.

Le temps d'exécution de la journalisation ne fonctionne que pour un ensemble limité de scénarios, car la journalisation ne permet de surveiller que la latence (et non pas l'utilisation de la CPU), et sa mise en œuvre est longue, car les développeurs doivent journaliser chaque fonction d'une application (sans impact sur les performances de l'application), ce qui laisse les développeurs sans les outils nécessaires pour surveiller les applications en production et résoudre les problèmes associés efficacement. C'est là qu'intervient le profilage: Amazon CodeGuru Profiler est conçu pour collecter des données sur tout ce qui s'est passé dans le comportement de l’application, quels que soient les scénarios. CodeGuru Profiler utilise une base de connaissances des inefficacités de performance couramment rencontrées pour découvrir automatiquement les modèles de code dans votre application live qui ont un impact sur ses performances. Les développeurs peuvent alors suivre les recommandations avancées pour corriger les problèmes.

Les APM traditionnels fournissent des données utiles à propos de la surveillance, du traçage et des performances des applications. Amazon CodeGuru Profiler complète ces fonctionnalités APM en proposant une visualisation des données d'exécution de l'application, ainsi que des recommandations exploitables pour corriger les problèmes de performances qu’il découvre. Il utilise également le machine learning pour détecter et signaler les anomalies dans le profil de votre application, en pointant les lignes de code anormales. Amazon CodeGuru Profiler vous permet de voir facilement les parties du code qui présentent la plus grande opportunité d'optimisation des performances, ainsi que les économies potentielles, et de recevoir des conseils sur la façon de les aborder sans avoir besoin d'une formation approfondie en ingénierie des performances. Amazon CodeGuru Profiler profile à la fois les instances EC2, les conteneurs et les plateformes de calcul sans serveur, y compris AWS Lambda, ainsi que sur site. En outre, certains profileurs autonomes sont conçus pour fonctionner uniquement dans des environnements de test, tandis qu’Amazon CodeGuru Profiler est conçu pour fonctionner en continu en production, sous des charges de trafic de production, et sans impact sur l'application. Cela se révèle utile au moment de résoudre des problèmes opérationnels en production, y compris en cas d'exécution sur des hôtes bare metal.

Amazon CodeGuru Profiler fonctionne avec les applications hébergées sur Amazon EC2, les applications conteneurisées fonctionnant sur Amazon ECS et Amazon EKS, ainsi que les applications sans serveur fonctionnant sur AWS Fargate et AWS Lambda. Vous pouvez en outre exécuter Amazon CodeGuru Profiler sur site

L'agent d'Amazon CodeGuru Profiler utilise les ressources (CPU, mémoire) allouées aux fonctions AWS Lambda. Il est optimisé pour avoir un impact minimal sur les performances de votre application lorsqu'elle s'exécute comme une thread interne au processus. Si votre application consomme la plupart des ressources sur la fonction AWS Lambda, évaluez la possibilité d'augmenter les ressources pour permettre à l'agent de fonctionner correctement.

CodeGuru Profiler prend actuellement en charge Java, Python (version préliminaire) et les langages JVM tels que Scala et Kotlin.

Amazon CodeGuru Profiler se compose de trois parties: un agent, le service de profilage et des recommandations intelligentes. L'agent est lancé avec votre application sur la ligne de commande et s'exécute comme une thread interne au processus dans le cadre de votre application. Il prend les données de chacune des instances de votre service qui exécutent l'agent et les envoie toutes les 5 minutes au service de profilage, qui les agrège ensuite. Amazon CodeGuru Profiler publie ensuite les données de profil dans des graphiques de type flamme interactifs qui vous permettent de visualiser les performances de votre application. Amazon CodeGuru Profiler analyse également en permanence les données profilées et les compare aux bonnes pratiques d'Amazon et de l'ingénierie des performances, et vous alerte de manière proactive avec des recommandations intelligentes lorsque des problèmes de performances sont découverts. Il utilise également le machine learning pour analyser en permanence les données d'exécution des applications et alerte lorsqu'il détecte des anomalies dans le profil de l'application et indique les lignes de code anormales.

CodeGuru Profiler profile le processeur (processeur actif et temps réel écoulé) et la mémoire (résumé du heap) pour Java et les autres langages JVM, et le CPU (temps réel écoulé) pour les applications Python.

Oui. Une fois que vous activez le profilage de la mémoire et commencez à profiler, CodeGuru Profiler collecte les informations à la fois du CPU et de la mémoire concernant votre application. Un seul groupe de profilage suffit pour obtenir les informations à la fois sur le CPU et sur la mémoire pour une application donnée.

CodeGuru Profiler fournit un résumé du heap. Le résumé du heap offre une vue consolidée de l'utilisation de la mémoire par type d'objet (p. ex., chaîne, int, char[]), y compris les types personnalisés, sur une période donnée (généralement 5 minutes). CodeGuru Profiler suit à la fois les tailles cumulées des objets et leur nombre. Ces métriques sont présentées sous la forme d’une ligne de temps, ce qui vous permet de repérer facilement les tendances et les pics d’utilisation de la mémoire par type d’objet.

Le résumé du heap est utile dans deux scénarios. Tout d'abord, il permet d’identifier les fuites potentielles de mémoire. Une courbe d’utilisation de la mémoire qui grimpe constamment pour un ou plusieurs types d’objets peut être le signe d’une fuite pouvant éventuellement saturer la mémoire et provoquer des crashs de l’application. Le second scénario est celui où vous souhaitez optimiser la mémoire occupée par votre application. Dans ce cas, la répartition de l’utilisation de la mémoire par type d’objet vous aidera à savoir où concentrer vos efforts. Par exemple, en sachant qu’une quantité étonnamment élevée de mémoire a été associée à un type d’objet spécifique, vous pouvez concentrer vos efforts d’analyse et d’optimisation sur les parties de votre application qui sont responsables de l’allocation et du référencement d’objets de ce type.