Skip to content

Instantly share code, notes, and snippets.

@pazteddy
Last active October 28, 2025 21:22
Show Gist options
  • Select an option

  • Save pazteddy/f3f46d7337b4bf57cbf3a99e1919ba52 to your computer and use it in GitHub Desktop.

Select an option

Save pazteddy/f3f46d7337b4bf57cbf3a99e1919ba52 to your computer and use it in GitHub Desktop.
Pasos para desplegar nuestra aplicación en AWS Elastic Beanstalk

Guía de despliegue en AWS Elastic Beanstalk

Esta guía documenta el proceso completo para desplegar la aplicación TechNotes en AWS Elastic Beanstalk, basada en el despliegue exitoso realizado.

Requisitos previos

Paso 1: Configurar credenciales de AWS

Access Keys (Lección en el curso)

Paso a paso desde la consola con el servicio IAM.

  • El usuario tiene que crearse con las siguientes políticas de permisos:
Captura de pantalla 2025-10-25 a la(s) 12 29 30 p  m
  • Con el usuario podemos crear las claves de acceso
    • AWS Access Key ID.
    • AWS Secret Access Key.

Paso 2: Inicializar Elastic Beanstalk

Desde la raíz del proyecto:

cd /Users/teddypaz/Desktop/Fullstack (Ubicación raíz de tu proyecto)
eb init

Durante la inicialización:

  • Region: us-east-2c (tu región o la misma que la base de datos)
  • Application name: TechNotes
  • Platform: .NET 8 running on 64bit Amazon Linux 2023
  • CodeCommit: No
  • SSH: No (pero es recomendado para debugging)

Esto crea el directorio .elasticbeanstalk/ con el archivo config.yml.

Paso 3: Crear el entorno de Elastic Beanstalk

eb create technotes-env --profile eb-cli

Notas importantes:

  • Usa technotes-env (sin guión bajo) para evitar problemas.
  • La creación toma aproximadamente 5-10 minutos
  • Si el entorno falla al crear, usa eb terminate technotes-env --profile eb-cli y vuelve a crearlo

Paso 4: Publicar y empaquetar la aplicación

4.1 Limpiar artefactos anteriores

cd /Users/teddypaz/Desktop/Fullstack
rm -rf artifacts

4.2 Restaurar dependencias

dotnet restore

4.3 Publicar la aplicación en modo Release

dotnet publish ./TechNotes/TechNotes.csproj -c Release -o ./artifacts/publish

Importante: El flag -o ./artifacts/publish especifica la carpeta de salida.

4.4 Empaquetar en ZIP

cd ./artifacts/publish
zip -r ../TechNotes.zip .
cd ../..

Nota: El punto . al final del comando zip empaqueta el contenido de la carpeta actual, no la carpeta misma.

4.5 Verificar el paquete

ls -lh ./artifacts/TechNotes.zip
unzip -l ./artifacts/TechNotes.zip | head -20

Debes ver archivos como:

  • TechNotes.dll
  • TechNotes.runtimeconfig.jsonCrítico para EB
  • TechNotes.deps.json
  • appsettings.json
  • wwwroot/

Paso 5: Configurar el archivo de despliegue

Asegúrate de que .elasticbeanstalk/config.yml contenga:

branch-defaults:
 main:	
   environment:  technotes-env
   group_suffix:  null
deploy:
 artifact:  artifacts/TechNotes.zip
global:
 application_name:  TechNotes
 branch:  null
 default_ec2_keyname:  null
 default_platform:  .NET 8 running on 64bit Amazon Linux 2023
 default_region:  sa-east-1
 include_git_submodules:  true
 instance_profile:  null
 platform_name:  null
 platform_version:  null
 profile:  eb-cli
 repository:  null
 sc:  git
 workspace_type:  Application

Paso 6: Desplegar la aplicación

6.1 Verificar entornos disponibles

eb list

Deberías ver:

* technotes-env

El asterisco * indica el entorno activo.

6.2 Desplegar

eb deploy --profile eb-cli

O si no especificaste el perfil en config.yml:

eb deploy

La carga y despliegue toma aproximadamente 2-5 minutos.

Paso 7: Verificar el despliegue

7.1 Ver el estado del entorno

eb status --profile eb-cli

7.2 Abrir la aplicación en el navegador

eb open --profile eb-cli

Paso 8: Configurar variables de entorno (Opcional)

Si necesitas configurar variables de entorno (base de datos, secretos, etc.):

eb setenv ASPNETCORE_ENVIRONMENT=Production \
          ConnectionStrings__Default="Host=...;Port=5432;Database=...;Username=...;Password=..." \
          --profile eb-cli

Comandos útiles de mantenimiento

Ver salud del entorno

eb health --profile eb-cli

Conectar por SSH a la instancia

eb ssh --profile eb-cli

Escalar instancias

eb scale 2 --profile eb-cli  # 2 instancias

Terminar el entorno (¡Cuidado!)

eb terminate technotes-env --profile eb-cli

Script rápido de despliegue

Para despliegues futuros, puedes crear un script deploy.sh:

#!/bin/bash
set -e

echo "🧹 Limpiando artefactos..."
rm -rf artifacts

echo "📦 Restaurando dependencias..."
dotnet restore

echo "🏗️  Publicando aplicación..."
dotnet publish ./TechNotes/TechNotes.csproj -c Release -o ./artifacts/publish

echo "📦 Empaquetando..."
cd ./artifacts/publish
zip -r ../TechNotes.zip .
cd ../..

echo "✅ Paquete creado: $(ls -lh ./artifacts/TechNotes.zip | awk '{print $5}')"

echo "🚀 Desplegando a AWS..."
eb deploy --profile eb-cli

echo "✅ Despliegue completado!"
eb open --profile eb-cli

Dar permisos de ejecución:

chmod +x deploy.sh
./deploy.sh

Solución de problemas comunes

Error: "single .NET Core application. You must include a file with a '.runtimeconfig.json' suffix"

Causa: Estás desplegando código fuente en lugar del artefacto publicado.

Solución: Asegúrate de ejecutar dotnet publish y empaquetar desde ./artifacts/publish.

Error: "CREATE_FAILED state"

Causa: El entorno falló al crearse (permisos IAM, VPC, etc.).

Solución:

  1. Ver eventos: eb events --all --profile eb-cli
  2. Terminar entorno: eb terminate technotes-env --profile eb-cli
  3. Crear nuevamente: eb create technotes-env --profile eb-cli

Error: "This branch does not have a default environment"

Causa: No hay un entorno seleccionado por defecto.

Solución:

eb use technotes-env --profile eb-cli

La aplicación no carga o muestra error 502

Causa: La aplicación no está escuchando en el puerto correcto o hay errores de configuración.

Solución:

  1. Ver logs: eb logs --profile eb-cli
  2. Verificar que Program.cs use WebApplication.CreateBuilder(args) (detecta puerto automáticamente)
  3. Verificar variables de entorno y connection strings

Costos estimados (Región sa-east-1)

  • Elastic Beanstalk: Gratis (solo pagas recursos)
  • EC2 t3.micro (1 instancia): ~$8-10 USD/mes
  • Load Balancer (si habilitado): ~$16 USD/mes
  • S3 (almacenamiento de versiones): ~$1 USD/mes
  • RDS db.t3.micro (si usas): ~$15-20 USD/mes

Total estimado: $25-50 USD/mes (configuración básica)

Siguientes pasos recomendados

  1. Configurar HTTPS/SSL:

    • Solicitar certificado en AWS Certificate Manager (ACM)
    • Configurar listener HTTPS en el Load Balancer
  2. Configurar Auto Scaling:

    • Ajustar capacidad mínima/máxima de instancias
  3. Configurar CI/CD:

    • GitHub Actions para despliegue automático
    • CodePipeline de AWS
  4. Configurar Base de Datos:

    • Amazon RDS (PostgreSQL/MySQL)
    • Configurar connection string en variables de entorno
  5. Monitoreo:

    • CloudWatch para logs y métricas
    • Configurar alarmas

Historial de comandos exitosos:

eb init
aws configure sso
eb create technotes-env --profile eb-cli
dotnet restore
dotnet publish ./TechNotes/TechNotes.csproj -c Release -o ./artifacts/publish
cd ./artifacts/publish && zip -r ../TechNotes.zip . && cd ../..
eb deploy --profile eb-cli
eb open --profile eb-cli
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment