Skip to content

amandladev/aws-pipeline-cdk

Repository files navigation

🚀 AWS CI/CD Pipeline con CDK - Tutorial Completo

Este proyecto implementa un pipeline CI/CD completo usando AWS CDK con TypeScript. Incluye una aplicación Node.js desplegada en ECS Fargate, con integración a GitHub y despliegue rolling con cero tiempo de inactividad.

📋 Arquitectura

GitHub → CodePipeline → CodeBuild → ECR → ECS Fargate

Servicios AWS Utilizados:

  • AWS CodePipeline: Orquestación del pipeline
  • AWS CodeBuild: Compilación y construcción de imágenes Docker
  • Amazon ECR: Registro de imágenes Docker
  • Amazon ECS con Fargate: Ejecución de contenedores
  • Application Load Balancer: Balanceador de carga
  • CloudWatch: Logs y monitoreo
  • IAM: Gestión de permisos

🛠️ Prerrequisitos

  1. AWS CLI configurado con credenciales válidas:

    aws configure
  2. Node.js (versión 18 o superior):

    node --version
    npm --version
  3. AWS CDK CLI:

    npm install -g aws-cdk
    cdk --version
  4. Docker (para pruebas locales):

    docker --version
  5. Repositorio GitHub y Personal Access Token

🚀 Configuración Inicial

1. Clonar y configurar el proyecto

git clone https://github.com/TU_USUARIO/pipelineCDK.git
cd pipelineCDK
npm install

2. Configurar parámetros en cdk.json

Edita el archivo cdk.json y actualiza:

{
  "environment": "dev",
  "githubOwner": "TU_USUARIO_GITHUB",
  "githubRepo": "pipelineCDK",
  "githubBranch": "main"
}

3. Crear GitHub Personal Access Token

  1. Ve a GitHub → Settings → Developer settings → Personal access tokens
  2. Genera un token con permisos: repo, admin:repo_hook
  3. Guarda el token en AWS Secrets Manager:
aws secretsmanager create-secret \
  --name github-token \
  --description "GitHub Personal Access Token for CodePipeline" \
  --secret-string '{"token":"ghp_tu_token_aqui"}'

4. Bootstrap CDK (solo la primera vez)

cdk bootstrap

📦 Despliegue

Comandos CDK Paso a Paso

  1. Compilar el proyecto:

    npm run build
  2. Verificar la síntesis del stack:

    cdk synth
  3. Ver las diferencias antes del despliegue:

    cdk diff
  4. Desplegar la infraestructura:

    cdk deploy --all --require-approval never

Despliegue por Entornos

# Desarrollo
cdk deploy -c environment=dev

# Producción  
cdk deploy -c environment=prod -c githubBranch=main

🧪 Pruebas Locales

Ejecutar la aplicación localmente

cd app
npm install
npm start

La aplicación estará disponible en: http://localhost:3000

Endpoints disponibles:

  • GET / - Página principal
  • GET /health - Health check
  • GET /info - Información del sistema

Construir imagen Docker localmente

docker build -t hello-world-app .
docker run -p 3000:3000 hello-world-app

About

Deployment pipeline template with AWS CDK

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •