Skip to content
English
On this page

Guía de Configuración de AWS SAM CLI

1. Requisitos Previos

1.1 Herramientas Necesarias

  • AWS CLI instalado y configurado
  • Docker instalado (para testing local)
  • Python 3.6 o superior
  • Node.js (opcional, para funciones Lambda en Node.js)

1.2 Permisos AWS

  • Permisos IAM adecuados para CloudFormation
  • Acceso a servicios como Lambda, API Gateway, S3

2. Instalación

2.1 Windows

  1. Descargar el instalador MSI de AWS SAM CLI
  2. Ejecutar el instalador
  3. Verificar la instalación:
bash
sam --version

2.2 macOS

  1. Usando Homebrew:
bash
brew tap aws/tap
brew install aws-sam-cli
  1. Verificar la instalación:
bash
sam --version

2.3 Linux

  1. Usando el script de instalación:
bash
pip install --user aws-sam-cli
  1. Verificar la instalación:
bash
sam --version

3. Configuración Básica

3.1 Configuración Inicial

bash
# Verificar la configuración de AWS CLI
aws configure list

# Crear un nuevo proyecto SAM
sam init

# Seleccionar opciones:
# - Runtime (Python, Node.js, etc.)
# - Tipo de aplicación
# - Nombre del proyecto

3.2 Estructura del Proyecto

mi-proyecto/
├── events/
│   └── event.json
├── hello_world/
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── tests/
│   └── unit/
├── template.yaml
└── samconfig.toml

4. Comandos Principales

4.1 Desarrollo Local

bash
# Construir la aplicación
sam build

# Invocar función localmente
sam local invoke "FunctionName" -e events/event.json

# Iniciar API localmente
sam local start-api

# Iniciar Lambda localmente
sam local start-lambda

4.2 Testing

bash
# Ejecutar tests unitarios
sam local invoke -e events/event.json

# Generar eventos de prueba
sam local generate-event apigateway aws-proxy > events/api-event.json

4.3 Despliegue

bash
# Desplegar con guía interactiva
sam deploy --guided

# Desplegar con configuración existente
sam deploy

# Desplegar con parámetros específicos
sam deploy --template-file template.yaml --stack-name mi-stack

5. Configuración Avanzada

5.1 samconfig.toml

toml
version = 0.1
[default]
[default.deploy]
[default.deploy.parameters]
stack_name = "mi-aplicacion"
s3_bucket = "mi-bucket-deployment"
s3_prefix = "mi-aplicacion"
region = "us-east-1"
confirm_changeset = true
capabilities = "CAPABILITY_IAM"

5.2 template.yaml

yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Mi Aplicación Serverless

Globals:
  Function:
    Timeout: 3
    MemorySize: 128

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.9
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello
            Method: get

6. Buenas Prácticas

6.1 Desarrollo

  1. Estructuración del Código
bash
# Organizar funciones por dominio
functions/
  ├── auth/
  ├── users/
  └── orders/

# Separar configuraciones por ambiente
configs/
  ├── dev/
  ├── staging/
  └── prod/
  1. Testing Local
bash
# Crear eventos de prueba personalizados
sam local generate-event s3 put --bucket test-bucket > events/s3-event.json

# Probar con diferentes configuraciones
sam local invoke -n env.json

6.2 Despliegue

  1. Control de Versiones
bash
# Usar tags para versiones
sam deploy --tags Environment=dev Version=1.0.0

# Mantener diferentes configuraciones
sam deploy --config-env production
  1. Monitoreo
bash
# Verificar logs
sam logs -n FunctionName --stack-name mi-stack

# Monitorear despliegue
sam deploy --no-execute-changeset

7. Troubleshooting

7.1 Problemas Comunes

  1. Errores de Construcción
bash
# Limpiar caché de construcción
sam build --clear-cache

# Verificar dependencias
sam build --use-container
  1. Errores de Despliegue
bash
# Verificar CloudFormation
aws cloudformation describe-stack-events --stack-name mi-stack

# Validar template
sam validate
  1. Errores de Ejecución Local
bash
# Verificar Docker
docker ps

# Verificar red
sam local start-api --debug

7.2 Soluciones

  1. Configuración
  • Verificar credenciales AWS
  • Confirmar permisos IAM
  • Validar configuración de Docker
  1. Recursos
  • Monitorear uso de memoria
  • Verificar timeouts
  • Revisar límites de servicio

8. Comandos Útiles Adicionales

bash
# Empaquetar aplicación
sam package --template-file template.yaml --output-template-file packaged.yaml --s3-bucket mi-bucket

# Validar template
sam validate --template template.yaml

# Listar endpoints de API
sam local start-api --print-urls

# Debuggear función
sam local invoke -d 5858 "MyFunction"

Esta guía proporciona una base sólida para comenzar con AWS SAM CLI. Recuerda mantener actualizada la herramienta y seguir las mejores prácticas de seguridad y desarrollo de AWS.