Skip to content
English
On this page

Guía de Configuración de AWS EB CLI (AWS Elastic Beanstalk)

1. Requisitos Previos

1.1 Requerimientos Básicos

bash
# Python 3.7 o superior
python --version

# pip instalado
pip --version

# AWS CLI configurado
aws configure list

# Git instalado
git --version

1.2 Permisos AWS Necesarios

json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticbeanstalk:*",
                "ec2:*",
                "s3:*",
                "cloudformation:*",
                "autoscaling:*",
                "cloudwatch:*",
                "logs:*",
                "elasticloadbalancing:*"
            ],
            "Resource": "*"
        }
    ]
}

2. Instalación

2.1 Instalación mediante pip

bash
# Instalación global
pip install awsebcli

# Verificar instalación
eb --version

# Actualizar EB CLI
pip install --upgrade awsebcli

2.2 Configuración Inicial

bash
# Inicializar un repositorio EB
eb init

# Opciones comunes durante la inicialización:
# 1. Seleccionar región
# 2. Seleccionar credenciales
# 3. Seleccionar aplicación
# 4. Seleccionar plataforma
# 5. Configurar SSH

3. Configuración de Proyecto

3.1 Estructura Básica

mi-aplicacion/
├── .elasticbeanstalk/
│   └── config.yml
├── .ebextensions/
│   ├── 01_packages.config
│   └── 02_nginx.config
├── .ebignore
├── requirements.txt
└── application.py

3.2 Configuración de Entorno

yaml
# .elasticbeanstalk/config.yml
branch-defaults:
  master:
    environment: mi-app-prod
    group_suffix: null
global:
  application_name: mi-aplicacion
  branch: null
  default_ec2_keyname: my-key
  default_platform: Python 3.8
  default_region: us-east-1
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: null
  repository: null
  sc: git
  workspace_type: Application

4. Comandos Principales

4.1 Gestión de Entornos

bash
# Crear nuevo entorno
eb create mi-entorno-dev

# Listar entornos
eb list

# Cambiar entorno activo
eb use mi-entorno-dev

# Terminar entorno
eb terminate mi-entorno-dev

4.2 Despliegue

bash
# Desplegar aplicación
eb deploy

# Desplegar a entorno específico
eb deploy mi-entorno-prod

# Desplegar con etiqueta
eb deploy -l v1.0.0

5. Configuración Avanzada

5.1 Configuraciones de Entorno (.ebextensions)

yaml
# .ebextensions/01_packages.config
packages:
  yum:
    python3-devel: []
    postgresql-devel: []
    gcc: []

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: application:application
  aws:elasticbeanstalk:application:environment:
    PYTHONPATH: "/var/app/current"

container_commands:
  01_migrate:
    command: "python manage.py migrate"
    leader_only: true

5.2 Configuración de Auto Scaling

yaml
# .ebextensions/02_autoscaling.config
option_settings:
  aws:autoscaling:asg:
    MinSize: 2
    MaxSize: 4
  
  aws:autoscaling:trigger:
    BreachDuration: 5
    LowerBreachScaleIncrement: -1
    LowerThreshold: 20
    UpperBreachScaleIncrement: 1
    UpperThreshold: 70

6. Monitoreo y Logs

6.1 Monitoreo

bash
# Ver estado del entorno
eb status

# Ver estado de salud
eb health

# Monitoreo en tiempo real
eb health --refresh

# Ver eventos
eb events -f

6.2 Logs

bash
# Ver logs
eb logs

# Descargar logs
eb logs --all

# Ver logs en tiempo real
eb logs -f

7. Configuraciones por Ambiente

7.1 Variables de Entorno

bash
# Configurar variables
eb setenv DB_HOST=myhost.com DB_USER=myuser DB_PASS=mypass

# Listar variables
eb printenv

7.2 Configuración por Ambiente

yaml
# .elasticbeanstalk/config.yml
branch-defaults:
  develop:
    environment: mi-app-dev
  staging:
    environment: mi-app-staging
  master:
    environment: mi-app-prod

8. Patrones y Mejores Prácticas

8.1 .ebignore

gitignore
# .ebignore
.git
.gitignore
.env
*.pyc
__pycache__
tests/
*.log
venv/

8.2 Scripts de Despliegue

bash
#!/bin/bash
# deploy.sh
ENVIRONMENT=$1
VERSION=$2

# Validar ambiente
if [[ ! "$ENVIRONMENT" =~ ^(dev|staging|prod)$ ]]; then
    echo "Ambiente debe ser dev, staging o prod"
    exit 1
fi

# Desplegar
eb use mi-app-$ENVIRONMENT
eb deploy -l $VERSION

9. Solución de Problemas

9.1 Problemas Comunes

  1. Errores de Despliegue
bash
# Verificar logs
eb logs

# Verificar estado
eb status

# Verificar eventos
eb events
  1. Problemas de Conexión
bash
# Verificar configuración
eb config

# Verificar security groups
eb ssh --setup

9.2 Comandos de Diagnóstico

bash
# SSH al servidor
eb ssh

# Verificar configuración
eb config

# Validar ambiente
eb validate

10. Comandos Útiles Adicionales

bash
# Abrir dashboard en navegador
eb console

# Reiniciar aplicación
eb restart

# Actualizar configuración
eb config save

# Clonar ambiente
eb clone mi-entorno-dev -n mi-entorno-staging

11. Seguridad

11.1 Mejores Prácticas

  1. Gestión de Claves
bash
# Generar par de claves
eb init --keyname mi-key-pair

# Configurar acceso SSH
eb ssh --setup
  1. Configuración de Security Groups
yaml
# .ebextensions/03_security.config
Resources:
  sslSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

11.2 Certificados SSL

yaml
# .ebextensions/04_ssl.config
option_settings:
  aws:elb:listener:443:
    SSLCertificateId: arn:aws:acm:region:account:certificate/certificate-id
    ListenerProtocol: HTTPS
    InstancePort: 80

12. Backup y Restauración

12.1 Backup de Configuración

bash
# Guardar configuración actual
eb config save mi-configuracion --cfg mi-backup

# Restaurar configuración
eb config mi-backup

12.2 Versionado

bash
# Listar versiones desplegadas
eb versions

# Desplegar versión específica
eb deploy -v v1.0.0