top of page
  • Foto del escritorRan Isenberg

Implementar en AWS con GitHub Actions y AWS CDK



Este blog explica cómo puedes usar AWS CDK para implementar en tu cuenta de AWS mediante la canalización CI/CD de GitHub Actions.

Siéntete libre de utilizar los fragmentos de código como desees.

Haga clic aquí y aquí para ver una plantilla de servicio GitHub AWS Serverless completamente funcional que utiliza el mismo fragmento.


Actualización enero 2024

Este archivo CI/CD completo se ha revisado y actualizado con versiones más nuevas y múltiples entornos: implementaciones en cuentas de desarrollo, ensayo y producción:


 

Vídeo TL;DR

Esta entrada del blog está disponible como vídeo.



 

Repasando los pasos del trabajo


Repasemos los pasos del proceso de CI/CD:

  1. Configuración del entorno

  2. Configuración de cuenta de AWS

  3. Ejecutar linters y pruebas unitarias

  4. Implementar pila

  5. Ejecutar pruebas E2E

  6. Destruir pila (solo para pila de desarrollo)


Configuración del entorno


Configuración de Python y Node


Este fragmento configurará Python 3.9 y Node v16 en el ejecutor CI/CD.


Configurar AWS CDK

Se recomienda utilizar la última versión de pip y AWS CDK.

En la línea 4, debes instalar tus dependencias de Python con pip, pipenv o poetry, dependiendo de tu arma preferida para administrar las dependencias de Python.

Estas dependencias incluyen dependencias de desarrollo (pytest, linters, etc.) y dependencias de tiempo de ejecución del servicio.



Configurar AWS Secrets


Debes configurar los secretos del repositorio de GitHub para que este fragmento funcione.

En Configuración/Secretos/Acciones, agregue 'AWS_SECRET_KEY' y 'AWS_ACCESS_KEY'.

Estos secretos se utilizan en una función de IAM predefinida que usted creó para su proceso de CI/CD.


Este es un ejemplo simple; sin embargo, por razones de seguridad, es mejor utilizar una solución SSO (fuera del alcance de esta guía).



La configuración yaml:

En la línea 7, elija la región de AWS de su elección.



Linters y pruebas unitarias

Justo antes de la implementación, se recomienda ejecutar linters como:

  1. pylint/escama8

  2. comprobaciones previas a la confirmación

  3. yapf/negro

  4. Comprobaciones de complejidad de código (radón/xenón)

Vea el ejemplo y la configuración de linters en mi plantilla de GitHub aquí y el archivo make que ejecuta los comandos de linters aquí .

Una vez finalizados los linters, ejecute pruebas unitarias como una primera puerta lógica de servicio.


Tiempo de implementación


En la línea 3, debes establecer la ruta correcta a tu archivo 'app.py' de CDK.

Normalmente coloco todos los archivos del proyecto CDK en una carpeta 'cdk' en lugar de en la ruta raíz del proyecto.


Pruebas E2E

Una vez que se complete la implementación, debe ejecutar las pruebas E2E y asegurarse de que su servicio se ejecute correctamente en AWS. Puede usar pytest para crear solicitudes de API REST u otros activadores para probar el servicio implementado.


Destruir pila

Este paso es relevante solo para la pila local o las solicitudes de extracción en las que desea destruir la pila al final.

Al igual que en la etapa de implementación, asegúrese de configurar la ruta correcta al archivo 'app.py' de su CDK.


El flujo completo



Comments


bottom of page