Automatice las CodeGuru revisiones de Amazon para aplicaciones de AWS CDK Python mediante GitHub Actions - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Automatice las CodeGuru revisiones de Amazon para aplicaciones de AWS CDK Python mediante GitHub Actions

Vanitha Dontireddy y Sarat Chandra Pothula, Amazon Web Services

Resumen

Nota: A partir del 7 de noviembre de 2025, no podrá crear nuevas asociaciones de repositorios en Amazon CodeGuru Reviewer. Para obtener información sobre los servicios con capacidades similares a las de CodeGuru Reviewer, consulte el cambio de disponibilidad de Amazon CodeGuru Reviewer en la documentación de CodeGuru Reviewer.

Este patrón muestra la integración de las revisiones de código CodeGuru automatizadas de Amazon para aplicaciones de AWS Cloud Development Kit (AWS CDK) Python, orquestadas a través GitHub de acciones. La solución implementa una arquitectura sin servidor definida en Python AWS CDK . Al automatizar el análisis de código experto dentro del proceso de desarrollo, este enfoque puede hacer lo siguiente para los proyectos de AWS CDK Python:

  • Mejorar la calidad del código.

  • Optimizar los flujos de trabajo.

  • Maximizar los beneficios de la informática sin servidor.

Requisitos previos y limitaciones

Requisitos previos 

  • Un activo Cuenta de AWS.

  • AWS Command Line Interface (AWS CLI) versión 2.9.11 o posterior, instalada y configurada.

  • Una GitHub cuenta activa y un GitHub repositorio con permisos de flujo de trabajo de lectura y escritura y creación de solicitudes de extracción (PR) mediante GitHub Actions para garantizar que el flujo de trabajo de PR funcione correctamente.

  • Una función de OpenID Connect (OIDC) en GitHub Actions para implementar la solución en. Cuenta de AWS Utilice el constructo de AWS CDK para crear el rol.

Limitaciones

  • Amazon CodeGuru Profiler admite aplicaciones escritas en todos los lenguajes de máquinas virtuales Java (JVM) (como Scala y Kotlin) y en tiempos de ejecución y Python 3.6 o versiones posteriores.

  • Amazon CodeGuru Reviewer solo admite asociaciones con repositorios de código Java y Python de los siguientes proveedores de código fuente: AWS CodeCommit Bitbucket GitHub, GitHub Enterprise Cloud y GitHub Enterprise Server. Además, los repositorios de Amazon Simple Storage Service (Amazon S3) solo se admiten mediante Actions. GitHub

  • No existe una forma automatizada de imprimir los resultados durante la canalización de procesos de integración e implementación continuos (CI/CD). En su lugar, este patrón utiliza GitHub las acciones como método alternativo para gestionar y mostrar los resultados.

  • Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS services by Region. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Arquitectura

En el siguiente diagrama se muestra la arquitectura para esta solución.

Flujo de trabajo para integrar la revisión de CodeGuru código para las aplicaciones Python de AWS CDK mediante GitHub Actions.

Como se muestra en el diagrama, cuando un desarrollador crea una solicitud de cambios (PR) para su revisión, GitHub Actions activa los siguientes pasos:

  1. Suposición de la función de IAM: la canalización utiliza la función de IAM que se especifica en GitHub Secrets para realizar las tareas de despliegue.

  2. Análisis de código

    • CodeGuru Reviewer analiza el código almacenado en el bucket de Amazon S3. Identifica los defectos y proporciona recomendaciones para corregirlos y optimizarlos.

    • CodeGuru La seguridad escanea en busca de infracciones y vulnerabilidades de las políticas.

  3. Revisión de resultados

    • La canalización imprime un enlace al panel de resultados en la salida de la consola.

    • Si se detectan resultados críticos, la canalización devuelve un error inmediatamente.

    • En el caso de tener resultados de gravedad alta, normal o baja, el proceso continúa al siguiente paso.

  4. Aprobación de PR

    • El revisor debe aprobar manualmente el PR.

    • Si se deniega el PR, se produce un error en la canalización y se detienen los pasos de implementación adicionales.

  5. Implementación de CDK: tras la aprobación del PR, comienza el proceso de implementación de CDK. Configura lo siguiente Servicios de AWS y los recursos:

    • CodeGuru Generador de perfiles

    • AWS Lambda función

    • Cola de Amazon Simple Queue Service (Amazon SQS)

  6. Generación de datos de creación de perfiles: para generar suficientes datos de creación de perfiles para CodeGuru Profiler:

    • La canalización invoca la función de Lambda varias veces mediante el envío periódico de mensajes a la cola de Amazon SQS.

Tools (Herramientas)

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en código.

  • CDK Toolkit es un kit de desarrollo en la nube de línea de comandos que le ayuda a interactuar con su AWS CDK aplicación.

  • Amazon CodeGuru Profiler recopila datos de rendimiento en tiempo de ejecución de sus aplicaciones activas y proporciona recomendaciones que pueden ayudarle a ajustar el rendimiento de las aplicaciones.

  • Amazon CodeGuru Reviewer utiliza el análisis de programas y el aprendizaje automático para detectar posibles defectos difíciles de encontrar para los desarrolladores. A continuación, CodeGuru Profiler ofrece sugerencias para mejorar el código de Java y Python.

  • Amazon CodeGuru Security es una herramienta de seguridad de aplicaciones estática que utiliza el aprendizaje automático para detectar infracciones y vulnerabilidades de las políticas de seguridad. Proporciona sugerencias para abordar los riesgos de seguridad y genera métricas para que pueda realizar un seguimiento del estado de seguridad de sus aplicaciones.

  • AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

  • Amazon Simple Queue Service (Amazon SQS) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

Otras herramientas

  • GitHub Actions es una plataforma de integración y entrega continuas (CI/CD) que está estrechamente integrada con los repositorios. GitHub Puedes usar GitHub Actions para automatizar tu proceso de creación, prueba e implementación.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub amazon-codeguru-suite-cdk-python.

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Configura las AWS credenciales.

Para exportar las variables que definen la pila Cuenta de AWS y Región de AWS dónde la vas a implementar, ejecuta los siguientes comandos:

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

Las AWS credenciales de la AWS CDK se proporcionan a través de variables de entorno.

AWS DevOps, DevOps ingeniero

Clonar el repositorio.

Para clonar un repositorio en su máquina local, ejecute el siguiente comando:

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps, DevOps ingeniero

Instale el kit de herramientas de CDK.

Para confirmar que el Kit de herramientas de CDK está instalado y comprobar la versión, ejecute el siguiente comando: 

cdk --version

Si la versión del kit de herramientas de CDK es anterior a la versión 2.27.0, ejecute el siguiente comando para actualizar a esa versión.

npm install -g aws-cdk@2.27.0

Si el kit de herramientas de CDK no está instalado, ejecute el siguiente comando para instalarlo:

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps ingeniero

Instale las dependencias requeridas.

Ejecute el siguiente comando para instalar las dependencias de proyecto necesarias:

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps, DevOps ingeniero

Arranque el entorno de CDK.

Para arrancar un entorno de AWS CDK, ejecute los siguientes comandos.

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

Tras arrancar correctamente el entorno, debería aparecer el siguiente resultado.

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Sintetiza la AWS CDK aplicación.

Para sintetizar una AWS CDK aplicación, ejecuta el siguiente comando:

cdk synth

Para obtener más información sobre este comando, consulte cdk synthesize en la documentación. AWS CDK

AWS DevOps, DevOps ingeniero

Implementación de recursos.

Ejecute el siguiente comando para implementar los recursos:

cdk deploy --require-approval never
nota

El indicador --require-approval never significa que el CDK aprobará y ejecutará todos los cambios automáticamente. Esto incluye los cambios que CDK normalmente consideraría que necesitan una revisión manual (como los cambios en la política de IAM o la eliminación de recursos). Asegúrese de que el código y la CI/CD canalización de su CDK estén bien probados y sean seguros antes de utilizar la --require-approval never bandera en entornos de producción.

AWS DevOps, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Cree los secretos necesarios en GitHub.

Para permitir que los flujos de trabajo de GitHub Actions accedan a AWS los recursos de forma segura sin exponer información confidencial del código de tu repositorio, crea secretos. Para crear los secretos de GitHub un repositorio y ROLE_TO_ASSUME CodeGuruReviewArtifactBucketNameAWS_ACCOUNT_ID, sigue las instrucciones de la documentación de GitHub Actions sobre cómo crear secretos para un repositorio.

A continuación, encontrará más información sobre las variables:

  • AWS_ACCOUNT_ID— El Cuenta de AWS ID en el que se ejecuta la canalización.

  • CodeGuruReviewArtifactBucketName— El nombre del depósito de S3 en el que se almacenan los artefactos de CodeGuru Reviewer. Este patrón utiliza el nombre de bucket codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>.

  • AWS_REGION— El Región de AWS lugar donde se encuentran los recursos.

  • ROLE_TO_ASSUME: nombre del rol de IAM que asume la canalización. Este patrón utiliza el nombre de rol githubActionsDeployRole.

AWS DevOps, DevOps ingeniero

Crea un token de acceso GitHub personal.

Para configurar una forma segura de autenticar tus flujos de trabajo de GitHub Actions e interactuar con ellos GitHub, haz lo siguiente:

  1. Para crear un token de acceso GitHub personal con acceso de lectura y escritura a tu repositorio, sigue las instrucciones que se indican en la GitHub documentación sobre cómo gestionar tus tokens de acceso personal.

  2. Para guardar este token como secreto de repositorio para GitHub Actions, sigue las instrucciones que se indican en la documentación de GitHub Actions sobre cómo crear secretos para un repositorio.

AWS DevOps, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Eliminación de recursos.

Para limpiar tu aplicación de AWS CDK Python, ejecuta el siguiente comando:

cdk destroy --all
DevOps ingeniero

Resolución de problemas

ProblemaSolución

Muestre el enlace a los resultados del panel.

No hay forma de imprimir los resultados durante el CI/CD oleoducto. En cambio, este patrón utiliza GitHub las acciones como un método alternativo para gestionar y mostrar los resultados.

Recursos relacionados

AWS resources

GitHub documentación