Este proyecto es una API Serverless para la gestión de contactos, construida con AWS SAM (Serverless Application Model), TypeScript y DynamoDB. El objetivo es demostrar un flujo completo de Integración y Despliegue Continuo (CI/CD) utilizando GitHub Actions y AWS CodePipeline.
La API utiliza los siguientes servicios de AWS:
- API Gateway: Punto de entrada para las peticiones REST.
- AWS Lambda: Funciones encargadas de la lógica de negocio (CRUD).
- Amazon DynamoDB: Base de datos NoSQL para el almacenamiento persistente de contactos.
- IAM: Roles y políticas para la gestión de permisos.
Antes de comenzar, asegúrate de tener instalado:
- Node.js (v20.x recomendado)
- Yarn
- AWS SAM CLI
- Una cuenta de AWS configurada localmente.
-
Clonar el repositorio:
git clone <tu-repo-url> cd workshop_ci-cd
-
Instalar dependencias:
yarn install
-
Compilar el proyecto:
yarn build
Este comando utiliza
tsuppara transpilar el código TypeScript a JavaScript en la carpetabuild/.
La API tiene como clave primaria el campo email.
- URL:
/ - Método:
POST - Cuerpo (JSON):
{ "email": "usuario@ejemplo.com", "name": "Juan Pérez", "phoneNumber": "+573001234567" }
- URL:
/{email} - Método:
GET - Ejemplo:
/usuario@ejemplo.com
- URL:
/{email} - Método:
PUT - Cuerpo (JSON):
{ "name": "Juan P. Editado", "phoneNumber": "+573119876543" }
- URL:
/{email} - Método:
DELETE - Ejemplo:
/usuario@ejemplo.com
Para mantener el proyecto organizado, seguimos este esquema:
main: Código estable y listo para producción. Los cambios aquí disparan el despliegue.develop: Rama base para el desarrollo. Aquí se integran las nuevas funcionalidades.feature/*: Ramas temporales para tareas específicas (ej:feature/ajuste-validaciones).
git checkout develop
git pull origin develop
git checkout -b feature/mi-nueva-tareaEl proyecto cuenta con una integración automática:
- Al hacer push a
main, GitHub Actions (contact-deploy.yml) se activa. - La acción solicita a AWS CodePipeline que inicie la ejecución del pipeline definido en AWS para desplegar los cambios.
Desarrollado como parte del Workshop de CI/CD.