Acelera el desarrollo de aplicaciones serverless con templates personalizados de SAM
Aprende cómo puedes usar templates personalizados con SAM para acelerar la configuración inicial de aplicaciones.
Este artículo fue traducido usando IA.
A medida que empiezas a establecer patrones y mejores prácticas dentro de tus proyectos, en algún momento querrás compartirlos para simplificar la vida de otros desarrolladores.
SAM te permite inicializar proyectos usando el comando init y seleccionando un template para tu proyecto. SAM tiene templates integrados para generar proyectos básicos de Hello-World (puedes encontrar la lista de templates aquí). Estos te ayudarán a empezar y familiarizarte con cómo estructurar tus aplicaciones serverless, pero a medida que tus aplicaciones crecen querrás agregarles tu propio toque. Es por esto que SAM proporciona la capacidad de usar templates personalizados para arrancar aplicaciones que incluyan tus propios diseños.
¿Cómo funciona sam init?
Primero necesitamos entender cómo funciona el comando init.
sam init usa cookiecutter para solicitar y resolver todos los valores de un template.
Primero seleccionarás si quieres usar un template existente de AWS o si quieres usar un template personalizado. Si eliges lo segundo tendrás que proporcionar la ubicación del template.
Una vez que tengas un template seleccionado, usará cookiecutter para solicitar al usuario toda la información necesaria para hacer los reemplazos adecuados en los archivos.
Creando un template personalizado
Ya que SAM usa cookiecutter para generar un proyecto, puedes usar cualquiera de las capacidades descritas en su documentación
1. Crear la estructura del proyecto
Le das a tu proyecto la estructura de carpetas necesaria, así como incluyes cualquier archivo necesario dentro de estas carpetas. Usualmente ya tienes un proyecto existente del cual quieres modelar cuando creas un template, puedes simplemente copiar todos los archivos y carpetas de ese proyecto existente a tu proyecto de template.
2. Identificar valores reemplazables
Ahora necesitas identificar qué valores necesita ingresar la persona para inicializar el proyecto. Estas son cosas que variarán de proyecto a proyecto. Por ejemplo, si estás trabajando con una API serverless podrías proporcionar valores para el nombre de la tabla DynamoDB, el nombre del stage de la API, el nombre del stack y el runtime de la Lambda Function.
Con los atributos identificados ahora reemplazarás lo que tienes actualmente con algo que se vea así {{ cookiecutter.project_name }}, esto es lo que cookiecutter escaneará para poder reemplazar los valores con la entrada del usuario. Este formato se puede aplicar en cualquier lugar dentro de un archivo así como para nombres de carpetas o archivos.
En la captura de pantalla a continuación puedes ver cómo estoy usando el formato de reemplazo de cookiecutter para un nombre de carpeta así como para un string dentro de un archivo.

3. Configurar los metadatos de cookiecutter
Cookiecutter necesita saber qué atributos solicitar al usuario para poder usar los valores como reemplazos en el template. Esto se hace en un archivo cookiecutter.json en la raíz del proyecto de template. Este es un archivo JSON que contiene todos los atributos identificados en el paso #2, el archivo se verá algo así:
{
"outputDir": "",
"service_name": "",
"dynamodb_table_name": ""
}
Usando el template personalizado
Todo lo que tienes que hacer ahora es ejecutar el comando sam init, cuando te pregunten cuál es la fuente del template elegirás Custom Template Location. Tienes varias opciones aquí que dependen de dónde está ubicado tu template actualmente.
En mi ejemplo a continuación usé git, donde especifico la URL del repositorio donde está ubicado mi template:

Resumen
Aprendimos cómo crear un template personalizado para tus aplicaciones serverless en 3 simples pasos. Tener tu propio template es valioso cuando tu equipo empieza a crecer y hay nuevas aplicaciones creándose regularmente. Reducir la cantidad de tiempo que los desarrolladores pasan creando estructuras de carpetas y agregando funcionalidad boilerplate a una aplicación es genial para que el tiempo se enfoque en proporcionar valor al negocio.