Un cli para manejar proyectos serverless en aws con python
Project description
spa-cli
Una herramienta CLI para manejar proyectos serverless en AWS con Python
spa-cli es una herramienta de línea de comandos que facilita la creación, desarrollo y deployment de aplicaciones serverless en AWS utilizando Python. Proporciona comandos intuitivos para generar proyectos, crear endpoints, funciones Lambda y gestionar la configuración de la infraestructura.
Instalación
pip install spa-cli
Comandos Principales
Comandos del Proyecto (spa project)
spa project init
Crea un nuevo proyecto serverless con el patrón definido.
Descripción: Este comando inicializa un nuevo proyecto siguiendo el patrón serverless-python-application-pattern. Te guiará a través de la configuración inicial del proyecto incluyendo la selección de base de datos, región AWS y configuración del autor.
spa project init
Ejemplo de uso:
$ spa project init
Nombre del proyecto: mi-proyecto-serverless
Descripción del proyecto: API REST para gestionar usuarios
Nombre del autor: Juan Pérez
Email del autor: juan@ejemplo.com
Elija su motor de base de datos [mysql/postgresql]: mysql
Región de AWS [us-east-1]:
Escriba el nombre del secreto para las credenciales de la base de datos: db-credentials
spa project install
Instala las capas locales del proyecto, incluyendo dependencias y configuración necesaria.
Descripción: Configura e instala las capas (layers) locales del proyecto, incluyendo dependencias de Python y configuración específica para el entorno de desarrollo.
spa project install
spa project run-api
Ejecuta un servidor local para desarrollo y pruebas de la API.
Descripción: Inicia un servidor HTTP local que simula el comportamiento de las funciones Lambda, permitiendo desarrollo y pruebas sin necesidad de desplegar en AWS.
spa project run-api
Ejemplo de salida:
Iniciando servidor local
Servidor ejecutándose en http://localhost:8000
spa project build
Construye el proyecto para deployment, generando los archivos necesarios y preparando la infraestructura.
Descripción: Compila el proyecto creando los archivos de deployment necesarios, construye las capas (layers), genera las funciones Lambda y crea la configuración de la API.
spa project build
Ejemplo de salida:
Construyendo proyecto
Building layers from src/layers into build/tmp_build_layer...
Building lambdas from src/lambdas...
Building lambda stack...
Building API definition...
Build completed.
Comandos de Endpoints (spa endpoint)
spa endpoint add
Agrega un nuevo endpoint a la API.
Descripción: Crea un nuevo endpoint HTTP con su correspondiente función Lambda. Genera automáticamente el handler de la función, archivos de configuración de infraestructura y archivos de prueba.
spa endpoint add --method POST --path /usuarios --endpoint-name crear_usuario
Parámetros:
--method: Método HTTP (GET, POST, PUT, PATCH, DELETE)--path: Ruta del endpoint--endpoint-name: Nombre de la función Lambda
Ejemplo de uso:
spa endpoint add --method GET --path /usuarios --endpoint-name listar_usuarios
spa endpoint add --method POST --path /usuarios --endpoint-name crear_usuario
spa endpoint add --method PUT --path /usuarios/{id} --endpoint-name actualizar_usuario
Comandos de Lambda (spa lambda)
spa lambda add
Crea una nueva función Lambda sin endpoint HTTP asociado.
Descripción: Genera una nueva función Lambda para procesamiento de background, procesamiento de colas SQS, eventos CloudWatch, etc.
spa lambda add --lambda-name procesar_datos
Parámetros:
--lambda-name: Nombre de la función Lambda
Ejemplo de uso:
spa lambda add --lambda-name procesar_facturas
spa lambda add --lambda-name enviar_notificaciones
Comando de Versión
Ver la versión
spa --version
spa-cli --version
Muestra la versión actual de spa-cli instalada.
Comandos No Disponibles
Comandos de Modelo (spa model) - 🔒 No Habilitado Actualmente
Los comandos para gestionar modelos de base de datos están implementados pero no habilitados en la versión actual. Estos comandos estarán disponibles en futuras versiones:
spa model new- Crear nuevos modelos de datosspa model fromJson- Crear modelos desde archivos JSON
Estructura del Proyecto
Después de ejecutar spa project init, se genera la siguiente estructura:
mi-proyecto-serverless/
├── src/
│ ├── layers/ # Capas Lambda
│ │ ├── databases/ # Acceso a base de datos
│ │ └── core/ # Funciones centrales
│ ├── lambdas/ # Funciones Lambda
│ │ └── [nombre-lambda]/
│ │ ├── lambda_function.py
│ │ ├── test_lambda_function.py
│ │ └── infra_config.py
│ └── infra/ # Configuración de infraestructura
├── .spa/ # Configuración de spa-cli
│ ├── templates/ # Plantillas de código
│ │ ├── lambda_conf.txt
│ │ ├── lambda_endpoint.txt
│ │ ├── test_lambda_function.txt
│ │ └── lambda.txt
│ └── project.json # Configuración del proyecto
└── spa_project.toml # Archivo de configuración principal
Configuración
Archivo spa_project.toml
Este archivo contiene toda la configuración del proyecto. Se crea automáticamente cuando inicializas un proyecto.
[spa.project.definition]
name = "mi-proyecto"
description = "Descripción del proyecto"
author = "Tu Nombre"
author_email = "tu@email.com"
base_api = "api.yaml"
[spa.template.files]
model = ".spa/templates/models/model.txt"
service = ".spa/templates/models/service.txt"
controller = ".spa/templates/models/controller.txt"
endpoint = ".spa/templates/lambda_endpoint.txt"
lambda_function = ".spa/templates/lambda.txt"
test_lambda = ".spa/templates/test_lambda_function.txt"
lambda_conf = ".spa/templates/lambda_conf.txt"
[spa.project.folders]
models = "src/layers/databases/python/core_db/models"
services = "src/layers/databases/python/core_db/services"
controllers = "src/layers/core/python/core_http/controllers"
lambdas = "src/lambdas"
layers = "src/layers"
root = "src"
jsons = ".spa/templates/json"
Comandos Completos
Secuencia de desarrollo típica:
# 1. Crear nuevo proyecto
spa project init
# 2. Instalar dependencias locales
spa project install
# 3. Agregar endpoints
spa endpoint add --method GET --path /usuarios --endpoint-name listar_usuarios
spa endpoint add --method POST --path /usuarios --endpoint-name crear_usuario
# 4. Agregar funciones Lambda adicionales
spa lambda add --lambda-name procesar_imagenes
# 5. Desarrollar y probar localmente
spa project run-api
# 6. Construir para deployment
spa project build
Características
- ✅ Generación automática de funciones Lambda desde comandos CLI
- ✅ Plantillas preconfiguradas para proyectos serverless
- ✅ Soporte para bases de datos MySQL y PostgreSQL
- ✅ Configuración automática de AWS Lambda layers
- ✅ Servidor local para desarrollo y pruebas
- ✅ Integración con AWS SAM/CDK/Pulumi
- ✅ Generación automática de documentación API
- ✅ Tests unitarios incluidos
- ✅ Configuración de infraestructura as a code
Requisitos del Sistema
- Python 3.11+
- AWS CLI configurado (para deployment)
- Poetry (para gestión de dependencias)
Autor
David Cuy - david.cuy.sanchez@gmail.com
Enlaces
- Repositorio: https://github.com/DavidCuy/spa-cli
- Documentación: https://github.com/DavidCuy/spa-cli
- PyPI: https://pypi.org/project/spa-cli/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spa_cli-1.0.2.tar.gz.
File metadata
- Download URL: spa_cli-1.0.2.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cf2041855304be6abb3194f8985af8254e4b02fa09419c75be154388fa72ed3
|
|
| MD5 |
149a37a7295bd4598f885e7b7698849c
|
|
| BLAKE2b-256 |
de1567efd7373c1d135b0d79829cc0b84130954bfcc61173368e7d13470badfc
|
File details
Details for the file spa_cli-1.0.2-py3-none-any.whl.
File metadata
- Download URL: spa_cli-1.0.2-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a798771e7658a8fd083eb76072da77d222b705c888ec9e13ead55ab23ffd8aa7
|
|
| MD5 |
f60442821cfdbaed3277634313e65e45
|
|
| BLAKE2b-256 |
b71da1ca7ca6f2573ef7f22d09c08575e7c1308bc49444f3b4ff094e652a6ba7
|