

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
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications"></a>

*Vanitha Dontireddy y Sarat Chandra Pothula, Amazon Web Services*

## Resumen
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-summary"></a>

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](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) 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
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ AWS Command Line Interface [(AWS CLI) versión 2.9.11 o posterior, [instalada y configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ 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](https://github.com/aws-samples/github-actions-oidc-cdk-construct) para crear el rol.

**Limitaciones**
+ Amazon CodeGuru Profiler [admite aplicaciones](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html#what-is-language-support) 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](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-repositories.html) 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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-architecture"></a>

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.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/c5395e3e-ff2a-41cf-bd64-c73cc928b60b/images/18f880a2-9bc3-4d71-a598-bb83b68ee383.png)


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.

1. 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.

1. 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.

1. 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.

1. 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)

1. 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)
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-tools"></a>

**Servicios de AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en código.
+ [CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) 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](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 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](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 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](https://docs.github.com/en/actions/writing-workflows/quickstart) 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](https://github.com/aws-samples/amazon-codeguru-suite-cdk-python).

## Prácticas recomendadas
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-best-practices"></a>
+ Siga las [prácticas recomendadas para desarrollar e implementar una infraestructura en la nube con la AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html).
+ Siga las [prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) cuando utilice los flujos de trabajo de Servicios de AWS In GitHub Actions, entre las que se incluyen:
  + No guarde las credenciales en el código del repositorio.
  + [Obtenga un rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) para recibir credenciales temporales y utilícelas siempre que sea posible.
  + [Otorgue el mínimo privilegio al](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) rol de IAM utilizado en los flujos de trabajo de GitHub Actions. Conceda únicamente los permisos necesarios para realizar las acciones en sus flujos de trabajo de GitHub Actions. 
  + [Supervisa la actividad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) del rol de IAM que se usa en los flujos de trabajo de GitHub Actions.
  + Cambie periódicamente las credenciales a largo plazo que utilice.

## Epics
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-epics"></a>

### Configure su entorno
<a name="set-up-your-environment"></a>


| Tarea | Descripción | Habilidades 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:<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre><br />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:<pre>git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git</pre> | 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: <pre>cdk --version</pre><br />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.<pre>npm install -g aws-cdk@2.27.0</pre><br />Si el kit de herramientas de CDK *no* está instalado, ejecute el siguiente comando para instalarlo:<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps ingeniero | 
| Instale las dependencias requeridas. | Ejecute el siguiente comando para instalar las dependencias de proyecto necesarias:<pre>python -m pip install --upgrade pip<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps ingeniero | 
| Arranque el entorno de CDK. | Para [arrancar](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) un entorno de AWS CDK, ejecute los siguientes comandos.<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre><br />Tras arrancar correctamente el entorno, debería aparecer el siguiente resultado.<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre> | AWS DevOps, DevOps ingeniero | 

### Implementación de la aplicación de CDK
<a name="deploy-the-cdk-app"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Sintetiza la AWS CDK aplicación. | Para sintetizar una AWS CDK aplicación, ejecuta el siguiente comando:<pre>cdk synth</pre><br />Para obtener más información sobre este comando, consulte [cdk synthesize](https://docs.aws.amazon.com/cdk/v2/guide/ref-cli-cmd-synth.html) en la documentación. AWS CDK  | AWS DevOps, DevOps ingeniero | 
| Implementación de recursos. | Ejecute el siguiente comando para implementar los recursos:<pre>cdk deploy --require-approval never</pre>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 | 

### Crea GitHub secretos y un token de acceso personal
<a name="create-github-secrets-and-personal-access-token"></a>


| Tarea | Descripción | Habilidades 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` `CodeGuruReviewArtifactBucketName``AWS_ACCOUNT_ID`, sigue las instrucciones de la documentación de GitHub Actions sobre cómo [crear secretos para un repositorio](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository).<br />A continuación, encontrará más información sobre las variables:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | 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:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps ingeniero | 

### Limpieza
<a name="clean-up"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Eliminación de recursos. | Para limpiar tu aplicación de AWS CDK Python, ejecuta el siguiente comando:<pre>cdk destroy --all</pre> | DevOps ingeniero | 

## Resolución de problemas
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-troubleshooting"></a>


| Problema | Solució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
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-resources"></a>

**AWS resources**
+ [AWS Kit Cloud Development](https://aws.amazon.com/cdk/)
+ [ CodeGuru Documentación de Amazon](https://docs.aws.amazon.com/codeguru/)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [AWS Identity and Access Management](https://aws.amazon.com/iam/)
+ [Amazon Simple Queue Service](https://aws.amazon.com/sqs/)
+ [¿Qué es AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

**GitHub documentación**
+ [Configuración de OpenID Connect en Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [GitHub Acciones](https://github.com/features/actions)
+ [Reutilización de los flujos de trabajo](https://docs.github.com/en/actions/using-workflows/reusing-workflows)
+ [Activación de un flujo de trabajo](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) 