¿Cómo instalar Sam en Windows?

Despliegue Serverless con AWS SAM en Windows

19/08/2006

Valoración: 4.33 (15788 votos)

En el mundo del desarrollo en la nube, la agilidad y la eficiencia son cruciales. Las arquitecturas serverless han emergido como una solución poderosa, permitiendo a los desarrolladores centrarse en el código sin preocuparse por la gestión de servidores. Aquí es donde entra en juego AWS SAM (Serverless Application Model), un framework de código abierto que simplifica enormemente la creación y el despliegue de este tipo de aplicaciones en Amazon Web Services. Si eres un desarrollador que trabaja en un entorno Windows y buscas dar tus primeros pasos en el universo serverless de AWS, esta guía te llevará de la mano a través de todo el proceso, desde los conceptos fundamentales hasta el despliegue de tu primera aplicación.

¿Qué es el Sam init comando?
Al utilizar el sam init comando, se crea un directorio de proyectos, al que llamaremos AWS SAM proyecto, que normalmente incluye la AWS SAM plantilla, el código de la aplicación y otros archivos de configuración. AWS SAM es una solución de iAC ideal para escenarios en los que desee un desarrollo simplificado sin servidor con toda la potencia de.
Índice de Contenido

Entendiendo la Infraestructura como Código (IaC)

Antes de sumergirnos en AWS SAM, es fundamental comprender el concepto sobre el que se construye: la Infraestructura como Código o IaC. Este enfoque consiste en gestionar y aprovisionar la infraestructura de TI (servidores, bases de datos, redes, etc.) a través de archivos de configuración legibles por máquina, en lugar de hacerlo mediante configuración manual o herramientas interactivas. Se utilizan ficheros comúnmente escritos en formatos como YAML o JSON, que describen el estado deseado del entorno. La gran ventaja es que permite automatizar, replicar y versionar la infraestructura de la misma manera que se hace con el código de una aplicación, garantizando consistencia y eliminando errores humanos. Herramientas como AWS SAM, Terraform o AWS CDK son pilares de esta práctica.

¿Qué es Exactamente AWS SAM?

AWS Serverless Application Model (SAM) es una extensión de AWS CloudFormation diseñada específicamente para simplificar la forma en que se definen y despliegan los recursos de aplicaciones sin servidor. Proporciona una sintaxis abreviada y más intuitiva para declarar funciones Lambda, APIs de API Gateway, tablas de DynamoDB y los permisos de IAM que los conectan. En esencia, escribes una plantilla SAM más concisa y, durante el despliegue, SAM la transforma en una plantilla de CloudFormation mucho más detallada y completa, que es la que finalmente AWS utiliza para aprovisionar los recursos en tu cuenta.

Los Dos Pilares de AWS SAM

Para funcionar, AWS SAM se apoya en dos componentes principales que trabajan en conjunto:

  • La Plantilla SAM (template.yaml): Es el corazón de tu proyecto. Se trata de un archivo YAML donde defines todos los componentes de tu aplicación serverless. Siguiendo una especificación clara, describes tus funciones Lambda, los eventos que las disparan (como una petición HTTP a un endpoint de API Gateway), las bases de datos que utiliza y las políticas de seguridad necesarias. Es tu plano maestro para la infraestructura.
  • La AWS SAM CLI: Es tu herramienta de trabajo en la línea de comandos. Una vez instalada en tu sistema Windows, te proporciona un conjunto de comandos para todo el ciclo de vida de tu aplicación. Con la SAM CLI puedes inicializar un nuevo proyecto, construir y empaquetar tu código, probar y depurar tus funciones localmente en un entorno que simula la nube de AWS, y finalmente, desplegar tu aplicación.

Guía Paso a Paso: Tu Primera Aplicación con SAM en Windows

Una vez que tienes la AWS SAM CLI instalada en tu máquina con Windows (proceso que generalmente implica descargar un instalador MSI desde la documentación oficial de AWS y seguir los pasos), estás listo para crear y desplegar. A continuación, te mostramos el flujo de trabajo completo utilizando una plantilla de ejemplo "Hello World".

Paso 1: Inicialización del Proyecto

El primer paso es crear la estructura base de tu proyecto. Abre tu terminal de preferencia (como PowerShell o Command Prompt) y ejecuta el siguiente comando. Este iniciará un asistente interactivo que te guiará en la configuración.

¿Qué es Sam en AWS?
La especificación AWS SAM de la plantilla de es: Integrado en AWS CloudFormation: utilice la AWS CloudFormation sintaxis de directamente en la AWS SAM plantilla de y aproveche su amplia compatibilidad con las configuraciones de recursos y propiedades.
sam init

El asistente te hará una serie de preguntas. Para nuestro ejemplo, seguiremos esta ruta:

  1. Which template source would you like to use? Elige `1 - AWS Quick Start Templates`.
  2. Choose an AWS Quick Start application template: Elige `1 - Hello World Example`.
  3. Use the most popular runtime and package type? Puedes presionar 'Y' para usar Node.js o elegir 'N' para seleccionar otro runtime como Python. Para este ejemplo, asumiremos que seleccionamos Node.js (`-r nodejs18.x` si lo hicieras manualmente).
  4. Would you like to enable X-Ray tracing? Elige `N` (No) por ahora.
  5. Would you like to enable monitoring using CloudWatch Application Insights? Elige `N` (No) por ahora.
  6. Project name [sam-app]: Dale un nombre a tu proyecto, por ejemplo, `mi-primera-app-sam`.

Al finalizar, SAM habrá creado una carpeta con el nombre de tu proyecto y una estructura de archivos similar a esta:

-- mi-primera-app-sam |-- events | `-- event.json |-- hello-world | |-- app.js | |-- package.json | `-- tests | `-- unit | `-- test-handler.js |-- README.md |-- samconfig.toml `-- template.yaml

Aquí, `template.yaml` es tu plantilla SAM y `hello-world/app.js` contiene el código de tu función Lambda.

Paso 2: Construcción y Empaquetado del Proyecto

Antes de poder desplegar la aplicación, necesitas construirla. Este proceso empaqueta el código de tu aplicación y sus dependencias en un formato listo para ser subido a AWS. Navega dentro del directorio de tu proyecto en la terminal y ejecuta:

cd mi-primera-app-sam sam build

Este comando creará una nueva carpeta llamada `.aws-sam` dentro de tu proyecto. Esta carpeta contiene los artefactos de construcción que se utilizarán en el siguiente paso.

Paso 3: Despliegue de la Aplicación

¡Llegó el momento de llevar tu aplicación a la nube! Para este paso, es indispensable que tengas tus credenciales de AWS configuradas en tu máquina. El comando `sam deploy` se encargará de todo el proceso. Usaremos la bandera `--guided` la primera vez para que nos ayude a configurar el despliegue.

sam deploy --guided

Nuevamente, se iniciará un asistente interactivo:

  • Stack Name: Es el nombre que tendrá tu pila en AWS CloudFormation. Puedes usar el nombre del proyecto, `mi-primera-app-sam`.
  • AWS Region: Especifica la región de AWS donde quieres desplegar, por ejemplo, `us-east-1`.
  • Confirm changes before deploy: Presiona `Y` (Sí). Esto te mostrará los cambios que se aplicarán antes de confirmarlos.
  • Allow SAM CLI IAM role creation: Presiona `Y`. Permite que SAM cree los roles de IAM necesarios para que tus recursos funcionen.
  • Disable rollback: Presiona `N` (No). Es una buena práctica mantener el rollback activado para que, si algo falla, la pila vuelva a su estado anterior.
  • HelloWorldFunction may not have authorization defined, Is this okay?: Presiona `Y`. Para este ejemplo simple, la API será pública.
  • Save arguments to configuration file: Presiona `Y`. Esto guardará tus respuestas en el archivo `samconfig.toml` para que los futuros despliegues sean más rápidos (solo necesitarás ejecutar `sam deploy`).

Una vez que confirmes todo, la SAM CLI comenzará el proceso de despliegue. Podrás ver en tu terminal cómo se crean los recursos. Al finalizar, te proporcionará una URL de salida (el endpoint de tu API Gateway). ¡Puedes copiar esa URL en tu navegador o usar una herramienta como Postman para probar tu primera aplicación serverless!

Comparativa: AWS SAM vs Otras Herramientas IaC

Es útil entender dónde se posiciona SAM en comparación con otras herramientas populares de Infraestructura como Código en el ecosistema de AWS.

¿Cómo instalar Sam en Windows?
Instalación de SAM en Windows. Para desplegar una arquitectura básica, nos apoyaremos de la herramienta SAM CLI, inicializando un proyecto base con Nodejs, en conjunto de una plantilla de ejemplo llamada “hello world”. Arquitectura a desplegar: Para desplegar una aplicación en SAM seguiremos los siguientes pasos:
CaracterísticaAWS SAMAWS CloudFormation NativoAWS CDK
EnfoqueDeclarativo (YAML)Declarativo (YAML/JSON)Programático (TypeScript, Python, etc.)
SintaxisAbreviada y optimizada para serverlessVerbosa y muy detalladaUso de lenguajes de programación estándar
Curva de AprendizajeBaja-MediaMedia-AltaDepende del conocimiento del lenguaje
Ideal paraDesarrollo rápido de aplicaciones serverlessGestión completa y granular de toda la infraestructura de AWSEquipos que prefieren definir la infraestructura con lógica de programación

Preguntas Frecuentes (FAQ)

¿Qué es la especificación de la plantilla de AWS SAM?

Es el conjunto de reglas y la sintaxis abreviada que utilizas en tu archivo `template.yaml`. Es una superclase de la sintaxis de CloudFormation, lo que significa que puedes usar cualquier recurso de CloudFormation dentro de una plantilla SAM, pero también tienes acceso a los tipos de recursos simplificados de SAM como `AWS::Serverless::Function` o `AWS::Serverless::Api`.

¿El comando `sam build` compila mi código?

No exactamente en el sentido tradicional para lenguajes como Node.js o Python. Lo que `sam build` hace es copiar el código fuente y las dependencias a una estructura de directorios preparada para el empaquetado y despliegue. Para lenguajes compilados como Go o Java, sí invocaría el proceso de compilación necesario.

¿Puedo probar mi función Lambda sin desplegarla en AWS?

¡Sí! Una de las características más potentes de la AWS SAM CLI es la capacidad de invocar y probar tus funciones localmente. Puedes usar el comando `sam local invoke` para ejecutar una función una vez, o `sam local start-api` para iniciar un servidor de API local que simula API Gateway, permitiéndote probar tus endpoints desde tu máquina.

¿Qué sucede si elimino la pila desde la consola de CloudFormation?

Si eliminas la pila (Stack) creada por `sam deploy` directamente desde la consola de AWS CloudFormation, todos los recursos que se crearon como parte de esa pila (la función Lambda, el rol de IAM, la API Gateway, etc.) serán eliminados permanentemente de tu cuenta de AWS. Es la forma correcta de limpiar los recursos de un proyecto que ya no necesitas.

Si quieres conocer otros artículos parecidos a Despliegue Serverless con AWS SAM en Windows puedes visitar la categoría Juegos.

Subir