Aspectos generales
P: ¿Qué es Amazon CodeGuru?
Amazon CodeGuru es una herramienta para desarrolladores que proporciona recomendaciones inteligentes para mejorar la calidad del código e identificar las líneas de código más costosas de una aplicación.
P: ¿Qué puedo hacer con Amazon CodeGuru?
Amazon CodeGuru tiene dos componentes: Amazon CodeGuru Reviewer y Amazon CodeGuru Profiler. Amazon CodeGuru Reviewer utiliza el machine learning y el razonamiento automatizado para identificar problemas críticos y errores difíciles de encontrar durante el desarrollo de la aplicación para mejorar la calidad del código. Amazon CodeGuru Profiler optimiza el rendimiento de las aplicaciones que se ejecutan en la fase de producción e identifica las líneas de código más costosas, lo que reduce los costos operativos de forma significativa.
P: ¿Cómo puedo comenzar a utilizar Amazon CodeGuru?
Amazon CodeGuru ya está disponible de manera general. Puede comenzar ahora mismo en la consola de Amazon CodeGuru.
Para comenzar a utilizar Amazon CodeGuru Reviewer, inicie sesión en la consola de Amazon CodeGuru Reviewer, donde puede asociar un repositorio de código existente en GitHub, GitHub Enterprise, Bitbucket o AWS CodeCommit. Una vez configurado por única vez, Amazon CodeGuru Reviewer comienza a analizar el código y a proporcionar recomendaciones para mejorarlo directamente en la solicitud de extracción o en el repositorio de código.
También puede comenzar a generar perfiles de las aplicaciones en cuestión de minutos. Para comenzar a utilizar el generador de perfiles de Amazon CodeGuru, inicie sesión en la consola del generador de perfiles de Amazon CodeGuru, donde podrá configurar un grupo de generación de perfiles para la aplicación. Inicie la aplicación con el agente de generación de perfiles en la línea de comandos o siga los pasos para utilizar uno de los siguientes métodos personalizados que se describen. Puede permitir que el generador de perfiles de Amazon CodeGuru se ejecute de manera permanente para detectar de forma proactiva los problemas de rendimiento en las aplicaciones en funcionamiento.
P: ¿En qué regiones de AWS se encuentra disponible Amazon CodeGuru?
Para ver la lista de las regiones de AWS admitidas, consulte la tabla de regiones de AWS, que contiene información acerca de la infraestructura global de AWS. Para obtener más información, consulte Regiones y puntos de enlace en la Referencia general de AWS.
Amazon CodeGuru Reviewer
P: ¿Qué es Amazon CodeGuru Reviewer?
Amazon CodeGuru Reviewer es un servicio automatizado de revisión de código que identifica defectos graves y discrepancias con las prácticas recomendadas de creación de código para el código basado en Java y Python. Analiza las líneas de código dentro de una solicitud de extracción y proporciona recomendaciones inteligentes basadas en estándares aprendidos de los proyectos de código abierto principales, así como de la base de código de Amazon. El revisor de Amazon CodeGuru se integra perfectamente con los flujos de trabajo de revisión de código existentes en sistemas de control de código fuente de uso general, incluidos GitHub, GitHub Enterprise, Bitbucket y AWS CodeCommit. Además, proporciona recomendaciones prácticas para mejorar la calidad del código.
P: ¿Qué lenguajes de programación y repositorios de código fuente son compatibles?
En la actualidad, Amazon CodeGuru Reviewer admite el código Java y Python almacenado en los repositorios de GitHub, GitHub Enterprise, Bitbucket y AWS CodeCommit.
P: ¿Qué tipo de problemas detecta Amazon CodeGuru Reviewer?
Amazon CodeGuru Reviewer comprueba si hay problemas de simultaneidad, posibles condiciones de carrera, entradas sin corregir o maliciosas, manejo inapropiado de información confidencial (como credenciales) y pérdida de recursos, y también detecta las condiciones de carrera y los bloqueos en el código simultáneo. También sugiere las prácticas recomendadas de Java, Python y AWS. Además, detecta el código clonado que se puede consolidar para un mejor mantenimiento del código.
P: ¿Cómo puedo comenzar a utilizar Amazon CodeGuru Reviewer?
Vaya a la consola de Amazon CodeGuru para integrar las recomendaciones del revisor de Amazon CodeGuru directamente en las solicitudes de extracción del código. Para comenzar, puede visitar la consola de CodeGuru y seguir los pasos para asociar los repositorios de AWS CodeCommit, GitHub, GitHub Enterprise y BitBucket para empezar a recibir las recomendaciones del revisor de Amazon CodeGuru. Una vez habilitado, el revisor de Amazon CodeGuru ofrecerá automáticamente recomendaciones inteligentes, como comentarios acerca de las solicitudes de extracción generadas para los repositorios conectados.
P: ¿Tiene acceso el revisor de Amazon CodeGuru a mi código?
El revisor de Amazon CodeGuru necesita acceso de solo lectura a su código para generar recomendaciones. Su confianza, privacidad y la seguridad de su contenido son nuestra más absoluta prioridad, por lo que implementamos los controles adecuados, incluido el cifrado de la información en tránsito, con el fin de evitar el acceso no autorizado al contenido o su divulgación y asegurarnos de que nuestro uso cumple con los compromisos que tenemos con usted. Consulte las Preguntas frecuentes acerca de la privacidad de datos para obtener más información.
P: ¿Conserva el revisor de Amazon CodeGuru una copia de mi código?
No, el revisor de Amazon CodeGuru no almacena su código fuente.
P: ¿De qué manera se entrena el revisor de Amazon CodeGuru para proporcionar recomendaciones inteligentes?
El revisor de Amazon CodeGuru se entrena con modelos de aprendizaje automático supervisados y minería por reglas que utilizan una combinación de regresión logística y redes neuronales.
Por ejemplo, durante el entrenamiento para detectar discrepancias con las prácticas recomendadas de AWS, el revisor de Amazon CodeGuru mina bases de código de Amazon mediante técnicas de búsqueda y modelos susceptibles a las localidades para las solicitudes extracción que incluyen llamadas a la API de AWS. Examina los cambios de código destinados a mejorar la calidad del código y los compara con los datos de la documentación. El resultado es la creación de un conjunto nuevo de reglas que el revisor le ofrece como prácticas recomendadas cuando revisa el código.
Durante la formación para detectar la pérdida de recursos y la exposición de información confidencial, realiza un análisis completo del código que abarca todas las rutas de código que utilizan el recurso o la información confidencial, crea un conjunto de características que las representan y luego las utiliza como entradas para los modelos de regresión logística y las redes neuronales convolucionales (CNN).
Para las inconsistencias de código, los modelos se forman durante la revisión completa o progresiva del código. Después de que un cliente desencadena una revisión, estos modelos utilizan una serie de técnicas de minería de datos y machine learning para crear el conjunto de datos, resaltar el motivo de los patrones de código y hacer recomendaciones personalizadas para el código del cliente.
Tanto para los modelos basados en reglas como para los basados en machine learning, Amazon CodeGuru Reviewer utiliza la información que usted proporciona como etiquetas y mejora de forma iterativa la calidad de los detectores de código.
P: ¿Cómo están integradas las herramientas de análisis de código de código abierto en CodeGuru Reviewer?
Amazon CodeGuru Reviewer incorpora reglas desde tres fuentes: (1) las reglas de CodeGuru Reviewer se integran a los servicios y se diseñan para utilizar el machine learning y el razonamiento automatizado para analizar código con el fin de lograr la calidad del código y solucionar los problemas de seguridad; (2) una versión administrada de Bandit, una herramienta de análisis de código de código abierto diseñada para detectar problemas de seguridad en el código de Python, se integra en CodeGuru Reviewer; y (3) una versión administrada de Infer, una herramienta de análisis de código de código abierto diseñada para encontrar concurrencias y otros problemas en el código de Java, también está integrada en CodeGuru Reviewer. CodeGuru Reviewer analiza el código con reglas de todas las fuentes (según corresponda al lenguaje de programación) y tiene un sistema de precios simple que incluye todos los análisis realizados.
Detector de seguridad de Amazon CodeGuru Reviewer
P: ¿Qué lenguajes de programación admite el detector de seguridad de Amazon CodeGuru Reviewer?
El detector de seguridad de Amazon CodeGuru Reviewer admite desde Java 8 hasta Java 11, así como Python 3 y sus versiones superiores.
P: ¿Por qué debería utilizar el detector de seguridad de Amazon CodeGuru Reviewer?
El detector de seguridad de Amazon CodeGuru Reviewer es como contar con un experto en seguridad disponible las 24 horas, los 7 días de la semana para revisar tu código. También ayuda a identificar las prácticas recomendadas de seguridad antes de la implementación.
P: ¿Cómo funciona el detector de seguridad de Amazon CodeGuru Reviewer?
El detector de seguridad de CodeGuru Reviewer analiza de manera estática el código para crear un gráfico de flujo de control que representa todos los métodos posibles en los que se puede ejecutar el código. Luego, detecta cómo fluyen los datos a través del gráfico de control de flujo para descubrir posibles problemas que involucren secuencias de operaciones que podrían expandirse por su aplicación, lo que comprende varios métodos y clases. Por ejemplo, el detector de seguridad determina si Javax.Crypto.KeyGenerator o crypto.secrets en Python, ambos generadores de claves secretas simétricos, se iniciaron antes de su uso, incluso si el inicio y el uso se realizaron con distintos métodos.
P: ¿Qué tipo de problemas detecta el detector de seguridad de Amazon CodeGuru Reviewer?
CodeGuru Reviewer puede ayudarlo con cinco categorías de problemas de seguridad del código: (1) las prácticas recomendadas de seguridad de la API de AWS lo ayudan a seguir las prácticas recomendadas de seguridad cuando utiliza API de varios servicios de AWS, como AWS EC2 y KMS; (2) las prácticas recomendadas de la biblioteca de criptografía de Java y Python lo ayudan a verificar las bibliotecas de criptografía de Java comunes, como Javax.Crypto.Cipher y el módulo criptográfico o de función hash integrado y de terceros (por ejemplo, la criptografía) en Python, para garantizar que estos se hayan iniciado y llamado correctamente; (3) las aplicaciones web seguras lo ayudan a verificar los problemas de seguridad relacionados con las aplicaciones web, tales como el scripting de sitios cruzados, la inyección LDAP y la inyección transversal de ruta; y (4) las prácticas recomendadas de seguridad de AWS le brindan experiencia en materia de seguridad interna, como las recomendaciones de AWS Crypto, para sus casos de uso.
P: ¿El detector de seguridad de Amazon CodeGuru Reviewer analiza todo el código de mi repositorio?
Sí. El detector de seguridad de CodeGuru Reviewer analiza los artefactos de compilación y todo el código fuente de Java en un repositorio para proporcionar recomendaciones de seguridad.
Integraciones de CI/CD de Amazon CodeGuru Reviewer
P: ¿Qué proveedores de CI/CD admite CodeGuru?
CodeGuru admite GitHub Actions para la integración de CI/CD.
P: ¿Cómo ayuda la integración de CodeGuru en mi canalización de CI/CD a mejorar mi código?
Mediante la integración de CodeGuru Reviewer en la canalización de CI/CD, puede automatizar fácilmente el proceso de revisión del código, tanto para la calidad del mismo como para las recomendaciones de seguridad. Puede configurarlo para que se ejecute en solicitudes pull o merge, push o ejecuciones programadas de la canalización. La integración garantiza que nunca se pierda una recomendación y que se monitoree continuamente la calidad del código y las posibles vulnerabilidades de seguridad.
P: ¿Cómo configuro la integración de CI/CD con GitHub?
Puede ver GitHub Action de CodeGuru Reviewer en el marketplace de GitHub haciendo clic aquí. Sigue las instrucciones de la página del marketplace para integrar CodeGuru en el flujo de trabajo de GitHub CI. Consulte nuestra documentación para obtener más información.
Amazon CodeGuru Profiler
P: ¿Qué es Amazon CodeGuru Profiler?
Amazon CodeGuru Profiler ayuda a los desarrolladores y operadores de TI a comprender fácilmente el comportamiento del tiempo de ejecución de las aplicaciones, mejorar el rendimiento y reducir los costos de infraestructura. Amazon CodeGuru Profiler analiza el perfil de tiempo de ejecución de la aplicación y proporciona recomendaciones inteligentes y visualizaciones que guían a los desarrolladores para que puedan mejorar el rendimiento de las partes más relevantes del código.
P: ¿Qué es un grupo de generación de perfiles?
Un grupo de generación de perfiles es una agrupación lógica que usted crea. Representa el límite de una aplicación. Por ejemplo, en una arquitectura de microservicios, un grupo de generación de perfiles combinaría los perfiles de los microservicios que se le han asignado y generaría un perfil para todos ellos.
P: Ya tengo un proceso completo de registro integrado en el código. ¿Tengo que generar perfiles de todas maneras?
Registrar el tiempo de ejecución solo funciona para un conjunto limitado de situaciones porque el registro solo puede monitorear la latencia (no el uso de la CPU). Además, la implementación requiere de bastante tiempo debido a que los desarrolladores tienen que registrar todas las funciones de una aplicación (sin que ello impacte el rendimiento de la aplicación), lo que deja a los desarrolladores sin las herramientas que necesitan para monitorear y resolver los problemas de las aplicaciones de forma efectiva en la fase de producción. Aquí es donde la generación de perfiles resulta útil: Amazon CodeGuru Profiler está diseñado para recopilar datos acerca de todo lo que ocurrió en el comportamiento de esa aplicación, independientemente de la situación. CodeGuru Profiler utiliza una base de conocimiento de las ineficiencias de rendimiento más comunes para detectar automáticamente patrones de código en la aplicación en funcionamiento que afectan su rendimiento. De tal forma, los desarrolladores pueden seguir las recomendaciones proporcionadas para solucionar los problemas.
P: ¿En qué se diferencia el generador de perfiles de Amazon CodeGuru de las herramientas de administración de rendimiento de aplicaciones tradicionales y de los generadores de perfiles independientes?
Las herramientas de gestión de rendimiento de aplicaciones tradicionales brindan datos útiles acerca del monitoreo, el seguimiento y el rendimiento de las aplicaciones. Amazon CodeGuru Profiler complementa estas capacidades de las herramientas de gestión de rendimiento de aplicaciones al proporcionar visualización de los datos de tiempo de ejecución de la aplicación, así como recomendaciones prácticas para los problemas de rendimiento que detecta. También utiliza el aprendizaje automático para detectar anomalías en el perfil de la aplicación y alertar sobre ellas, para lo que señala las líneas del código anómalas. Amazon CodeGuru Profiler permite ver fácilmente las partes del código que presentan una mayor oportunidad para la optimización del rendimiento, así como ahorros potenciales, y recibir orientación para abordarlas sin necesidad de tener un conocimiento amplio en ingeniería de rendimiento. Amazon CodeGuru Profiler genera perfiles para las instancias EC2, los contenedores y las plataformas de informática sin servidor, incluida AWS Lambda, como así también aquellas en las instalaciones. Además, algunos generadores de perfiles independientes están diseñados para funcionar solo en entornos de prueba, mientras que Amazon CodeGuru Profiler está diseñado para funcionar de forma permanente en la fase de producción, durante las cargas de tráfico de producción y sin afectar el funcionamiento de la aplicación. Esto es útil cuando se trata de solucionar problemas operativos en la etapa de producción, incluidos casos en los que se utilizan alojamientos sin sistema operativo.
P: ¿Sobre qué tipos de aplicaciones se pueden generar perfiles?
Amazon CodeGuru Profiler funciona con aplicaciones alojadas en Amazon EC2, aplicaciones en contenedores que se ejecutan en Amazon ECS y Amazon EKS, así como aplicaciones sin servidor que se ejecutan en AWS Fargate y AWS Lambda. Además, puede ejecutar Amazon CodeGuru Profiler en las instalaciones.
P: ¿Cómo impacta CodeGuru Profiler en el rendimiento de las aplicaciones alojadas en AWS Lambda?
El agente de Amazon CodeGuru Profiler utiliza los recursos (CPU, memoria) asignados a las funciones de AWS Lambda. Está ajustado para que tenga un impacto mínimo en el rendimiento de la aplicación mientras se ejecuta como un subproceso en curso. Si la aplicación consume la mayoría de los recursos en la función de AWS Lambda, considere aumentar los recursos para permitir que el agente funcione correctamente.
P: ¿Qué lenguajes de programación admite?
Actualmente, Amazon CodeGuru Profiler admite Java, Python (versión preliminar) y lenguajes de JVM, como Scala y Kotlin.
P: ¿Cómo funciona Amazon CodeGuru Profiler?
El generador de perfiles de Amazon CodeGuru tiene tres partes: un agente, el servicio de generador de perfiles y recomendaciones inteligentes. El agente se inicia con la aplicación en la línea de comandos y se ejecuta como un subproceso en curso como parte de la aplicación. Toma datos de cada una de las instancias de su servicio que ejecutan el agente y los envía al servicio de generador de perfiles cada cinco minutos, donde se agrupan. Amazon CodeGuru Profiler publica los datos del perfil en gráficos de llama interactivos que permiten visualizar el rendimiento de la aplicación. Amazon CodeGuru Profiler también analiza los datos incluidos en perfiles de manera permanente y los compara con las prácticas recomendadas de ingeniería de rendimiento y de Amazon, y envía recomendaciones inteligentes de forma proactiva cuando se detectan problemas de rendimiento. También utiliza el machine learning para analizar de forma continua los datos de tiempo de ejecución de la aplicación y genera alertas cuando detecta anomalías en el perfil de la aplicación, además de señalar las líneas del código anómalas.
P: ¿Para qué recursos genera perfiles Amazon CodeGuru Profiler y cuáles son los lenguajes admitidos?
CodeGuru genera perfiles para la CPU (CPU activa y tiempo real) y la memoria (resumen de montón) de Java y de otros lenguajes de JVM, y CPU (tiempo real) para aplicaciones de Python.
P: ¿Puedo obtener información de la CPU y de la memoria de la misma aplicación?
Sí, una vez que habilita la generación de perfiles de memoria y comienza a generarlos, CodeGuru Profiler recopilará la información de la CPU y de la memoria para su aplicación. Solo necesita un grupo de generación de perfiles para obtener datos de la CPU y la memoria para una aplicación determinada.
P: ¿Qué tipo de información de generación de perfiles de memoria proporciona Amazon CodeGuru Profiler?
CodeGuru Profiler ofrece información de resumen del montón. El resumen del montón ofrece una vista consolidada del uso de la memoria por tipo de objeto (p. ej., string, int, char[]) y tipos personalizados durante un periodo predeterminado (por lo general, de 5 minutos). CodeGuru realiza un seguimiento tanto de los tamaños agregados de los objetos como de su recuento. Estas métricas se presentan en un gráfico de línea de tiempo, por lo que puede identificar con facilidad las tendencias y los picos de uso de memoria por tipo de objeto.
P: ¿Qué puedo hacer con la información del resumen del montón?
El resumen del montón es útil para dos situaciones. Primero, puede detectar fugas de memoria potenciales. Una curva de uso de memoria en crecimiento constante de uno o más tipos de objetos puede indicar una fuga, lo que a su vez puede generar errores de falta de memoria y bloqueos de aplicación. El segundo caso es cuando quiere optimizar el espacio ocupado en la memoria de su aplicación. En este caso, el desglose del uso de la memoria por tipo de objeto lo ayudará a saber dónde prestar atención. Por ejemplo, si sabe que una alta e inesperada cantidad de memoria se ha asociado a un tipo de objeto específico, puede enfocar sus tareas de análisis y optimización en las partes de su aplicación que sean responsables de asignar y de hacer referencia a los objetos de este tipo.

Visite la página de clientes de Amazon CodeGuru.

Obtenga acceso instantáneo a la capa gratuita de AWS.

Comience a crear con Amazon CodeGuru en la consola de administración de AWS.