Rust en AWS Lambda con Cargo Lambda
🚀 Una nueva colaboración de la comunidad
En Oxidar creemos en el poder del aprendizaje colaborativo. Por eso, nos complace compartir uno de nuestros proyectos más recientes: oxidar-lambdas, una exploración práctica sobre cómo desplegar funciones Rust en AWS Lambda usando Cargo Lambda.
🤔 ¿Qué es Cargo Lambda?
Cargo Lambda es una herramienta que simplifica enormemente el desarrollo y despliegue de funciones Lambda escritas en Rust. Sin esta herramienta, tendrías que:
- Configurar manualmente toolchains de cross-compilation
- Manejar el empaquetado de binarios
- Escribir scripts de despliegue personalizados
- Lidiar con las complejidades del runtime de AWS Lambda
Cargo Lambda elimina toda esta fricción y nos permite enfocarnos en escribir código Rust de calidad.
🎬 Presentación
Presentamos una exposición sobre cómo utilizar Rust en la nube de la mano de AWS y Cargo Lambda en el meetup de Rust Argentina.
🚀 Lo que presentamos
Nicolás Antinori presentó “Creando un Lambda Authorizer en Rust con Cargo lambda”, donde exploramos en detalle cómo utilizar Rust para crear funciones de AWS Lambda en un caso de uso real, qué herramientas existen y cómo utlizar Rust nos ayuda a ahorrar recursos, lo cuál se traduce en ahorro de dinero.
🛠️ Stack tecnológico presentado
- Rust - El lenguaje de programación utilizado.
- Cargo Lambda - Herramienta CLI para la creación de funciones AWS Lambda en Rust.
- Amazon Web Services - El proveedor cloud utilizado para el proyecto.
📊 Descargar las slides
📋 Descargar slides de la presentación (PDF)
Las slides incluyen:
- Qué es Cargo Lambda
- Comandos básicos de Cargo Lambda
- Performance del Authorizer creado
- Muestras del tracing obtenido con Open Telemetry
- Link al repositorio con el código
🛠️ Lo que construimos juntos
Nuestro repositorio oxidar-lambdas incluye:
Estructura del proyecto
- Múltiples funciones Lambda en Rust
- Configuración de DynamoDB local con Docker
- Scripts de testing y despliegue automatizados
- Manejo de JWT para autenticación
- Configuración de tracing para observabilidad
Herramientas y tecnologías
- Rust como lenguaje principal
- Cargo Lambda para build y deploy
- AWS Lambda como plataforma serverless
- DynamoDB para persistencia
- Docker para desarrollo local
- GitHub para colaboración
🎯 Comandos esenciales de Cargo Lambda
Instalación
# Con pip (requiere Python 3)
pip3 install cargo-lambda
# Con Homebrew (macOS/Linux)
brew tap cargo-lambda/cargo-lambda
brew install cargo-lambda
# Con Scoop (Windows)
scoop bucket add cargo-lambda
scoop install cargo-lambda/cargo-lambda
Desarrollo local
# Crear un nuevo proyecto Lambda
cargo lambda new mi-funcion
# Build para producción
cargo lambda build --release
# Build para ARM64 (Graviton2)
cargo lambda build --release --arm64
# Servidor local para testing
cargo lambda watch
Testing y despliegue
# Invocar función localmente
cargo lambda invoke --data-example apigw-request
# Invocar con datos personalizados
cargo lambda invoke --data-file ./data.json
# Desplegar a AWS
cargo lambda deploy mi-funcion
💡 ¿Por qué Rust en Lambda?
Ventajas de usar Rust
- Performance: Cold starts rápidos y ejecución eficiente
- Memory safety: Sin preocupaciones por memory leaks
- Concurrencia: Manejo excelente de operaciones asíncronas
- Ecosistema: Crates robustos para AWS y desarrollo web
Casos de uso ideales
- APIs de alta performance
- Procesamiento de datos en tiempo real
- Microservicios con baja latencia
- Funciones de transformación de datos
🤝 El poder de la colaboración
Este proyecto fue posible gracias a la colaboración de varios miembros de Oxidar:
Juntos exploramos diferentes aspectos:
- Configuración de entornos de desarrollo
- Patrones de manejo de errores en Lambda
- Integración con servicios de AWS
- Optimización de cold starts
- Testing de funciones serverless
🎓 Aprendizajes clave
1. Simplificación del workflow
Cargo Lambda reduce significativamente la curva de aprendizaje para desarrollar en Lambda con Rust.
2. Desarrollo local eficiente
El comando cargo lambda watch
permite un ciclo de desarrollo rápido y cómodo.
3. Compatibilidad con el ecosistema AWS
La integración con herramientas como AWS SAM y CDK es fluida.
4. Performance excepcional
Las funciones Rust en Lambda ofrecen excelente rendimiento y eficiencia de memoria.
📚 Recursos adicionales
- Repositorio del proyecto
- Documentación oficial de Cargo Lambda
- AWS Lambda Rust Runtime
- Guía de AWS sobre Rust en Lambda
🔮 Próximos pasos
Como comunidad, continuamos explorando:
- Integración con otros servicios de AWS
- Patterns de arquitectura serverless
- Optimización de costos en Lambda
- Monitoring y observabilidad avanzada
🙌 ¡Únete a nosotros!
¿Te interesa contribuir a proyectos como este? ¡La comunidad Oxidar siempre está abierta a nuevos colaboradores!
Formas de participar:
- Explora el código en nuestro repositorio
- Propón mejoras a través de issues y PRs
- Comparte tu experiencia con Rust y serverless
- Únete a nuestras discusiones en Telegram
📝 Conclusión
oxidar-lambdas es más que un proyecto técnico; es un ejemplo de cómo el conocimiento compartido y la colaboración pueden acelerar el aprendizaje de toda una comunidad.
Rust y serverless computing son tecnologías que están transformando cómo construimos aplicaciones modernas. Con herramientas como Cargo Lambda, esa transformación está al alcance de cualquier desarrollador dispuesto a experimentar.
¿Tienes experiencia con Rust en Lambda? ¿Preguntas sobre serverless? ¡Nos encantaría escuchar tu perspectiva!
¡Gracias por hacer crecer la comunidad Rust en Latinoamérica! 🦀
Para más proyectos y colaboraciones, visita nuestro GitHub y únete a nuestra comunidad.