Preparación de entorno local con Serverless Framework en macOS

Clase 7 de 25Curso de Serverless Framework en AWS

Para la instalación de estas herramientas en macOS, así como en Windows, podemos encontrar los recursos e instrucciones totalmente gratis en internet. Para esta clase te dejaré las instrucciones resumidas para preparar tu entorno local para usar Serverless Framework.

Para esta guía usaremos una herramienta llamada Homebrew, el cual es un gestor de paquetes para MacOS y Linux, es altamente compatible con cualquier versión del sistema operativo de Apple 🤓.

Instalación:

# Extracted from official website/doc: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Para trabajar con Serverless Framework vamos a usar diferentes herramientas, de las cuales te dejamos una breve descripción de como será usada y su comando/guía de instalación.

1. Node y NPM:

Será el motor principal de ejecución de nuestras lambdas, dado que algunas se construirán en JavaScript, adicionalmente, notaras que mucha de la documentación y plugins son compatibles en mayor proporción con JavaScript, por estas razones usaremos Node como motor principal de ejecución de nuestras lambdas, adicionalmente también usaremos Python, para mostrar que Serverless no es exclusivo de JavaScript.

El proceso de instalación puede variar dependiendo de tu sistema operativo, en esta guía para macOS, podemos hacerlo de 3 sencillas formas: 1. Usando Homebrew, 2. Descargando el .pkg desde el sitio oficial, y finalmente 3. Instalando NVM y posteriormente descargando las versiones deseadas de Node y NPM.

En esta guía usaremos la primera forma usando Homebrew.

Instalación:

# Instalacion de node usando homebrew brew install node # Validacion de version de Node: node -v # Validacion de version de NPM: npm -v

Algunos usuarios recomiendan usar NVM, el cual es un gestor de versiones de Node, sus siglas vienen de Node Version Manager, permite tener múltiples versiones de Node en un mismo equipo, sin generar conflicto entre ellas ni sus dependencias instaladas.

2. Python:

Dado que Serverless Framework es agnóstico de los lenguajes de programación, vamos a desarrollar algunas lambdas en JS y otras en Python para ver el potencial de esta herramienta. La configuración de Python en macOS es muy similar a las otras herramientas, en este caso, te recomendamos trabajar con ambientes virtuales, dependiendo del caso de uso algunos serán más compatibles, dentro de nuestra experiencia Miniconda nos ha facilitado mucho la labor de trabajar con Python, en este caso lo puedes instalar de la siguiente forma.

Instalación con Homebrew:

# Instalar conda brew install --cask miniconda # Crear ambiente virtual para Python # env_name puede ser el nombre que elijas sin espacios # conda create --name <env_name> python=3.8 conda create --name learningsls python=3.8 # Activas el ambiente virtual conda activate learningsls # Y listo, ya puedes trabajar con Python 3.8 o la versión # que hayas configurado en tu ambiente virtual

¿Por qué usar un gestor de versiones de Python? Dado que MacOS y Linux, tienen una versión de Python nativamente instalado, instalar otras versiones puede generar conflictos en el sistema operativo, lo mejor es tener un ambiente o ambientes separados lógicamente para que no interfieran con el funcionamiento de las aplicaciones del sistema. Así como esta miniconda, algunos usuarios recomiendan pyenv o virtualenv. Puedes encontrar más información sobre este tema aquí.

3. Serverless Framework:

Para descargar el framework, podemos usar instrucciones de NPM y le indicamos que se configure de forma global, esto nos permitirá llamar los comandos sls o serverless desde cualquier directorio de nuestro sistema, no solo donde viva nuestro proyecto.

npm install -g serverless

4. AWS CLI:

La CLI de AWS nos permite comunicarnos con los recursos en la nube de AWS, así como desplegar y eliminar los servicios que creemos desde nuestro proyecto. La documentación de AWS es bastante clara y nos indica ejecutar los siguientes comandos para descargar el instalador, ejecutarlo y validar la instalación:

# Descargar el PKG o paquete de aplicación de macOS curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" # Ejecutar el PKG ubicando el instalador en el directorio / sudo installer -pkg AWSCLIV2.pkg -target / # Asi mismo podemos ver que version de la AWS CLI instalamos aws --version # Recuerda hacer AWS Configure para configurar las llaves de acceso de tu cuenta de AWS

5. GIT:

Git es la herramienta que usamos para gestionar el control de versiones o cambios en nuestro código, mediante esta herramienta podrás clonar el repositorio del proyecto, así como subir tus propios repositorios y cambios a tu cuenta de GitHub, para este proyecto vamos a usar Git para clonar el repositorio. Si eres nuevo en Git te invitamos a tomar el curso de Git para que aprendas a desarrollar un portafolio como Cloud Developer con las funciones lambdas que construyas en este curso.

# Instalar Git con Homebrew brew install git # Validar la versión git --version

6. Java JRE:

El JRE de Java nos permitirá simular DynamoDB en local, esto será bastante útil cuando queramos probar cambios si tener que desplegar nuestro código a la nube, en este caso el plugin de DynamoDB local nos indica que requiere el JAVA JRE para poder funcionar, la instalación podemos hacerla de dos formas, usando Homebrew, o descargando el instalador oficial del sitio de Oracle. Para el caso de la primera Homebrew nos da dos opciones, instalar la versión free de Java (OpenJDK) o la versión oficial de Java. Para efectos del curso podemos instalar la versión oficial mediante los siguientes comandos.

# Instalación de Java usando Homebrew` brew install --cask oracle-jdk # Validación de versión de Java java --version

Recuerda crear la variable de entorno JAVA_HOME haciendo referencia a la ubicación de java en tu sistema operativo. Si te interesa descargar el instalador desde el sitio oficial de Oracle aquí te dejamos el enlace a la página oficial.

7. Postman:

En este curso vamos a usar un cliente HTTP llamado Postman, es bien conocido en la industria y nos permita hacer llamados HTTP a nuestras API, este lo podemos instalar desde su página oficial o usando Homebrew mediante el siguiente comando:

# Postman brew install --cask postman

En este momento ya estás listo para ejecutar tu proyecto del curso de Serverless, los últimos pasos a seguir son:

# clonamos el repositorio del proyecto git clone https://github.com/platzi/serverless-framework # Instalamos las dependencias npm install # Configuramos DynamoDB en Local sls dynamodb install # Ya podemos ejecutar nuestro proyecto en local` sls offline start`

Al finalizar, verás los de ejecución en consola y podrás hacer tu primar llamado HTTP, con el método GET usando Postman o Curl a la siguiente URL:

http://localhost:3000/dev/users/1

serverless01_macOS1.png

El plugin de dynamodb para Serverless Framework tiene mejoras constantemente, parece ser que en las nuevas versiones disponibles se introdujo un error que generar este comportamiento al hacer el install en local.

Si te encuentras con este error a la hora de hacer el sls dynamodb install

Error:

Protocol "https:" not supported. Expected "http:"

Te recomendamos seguir los siguientes pasos para hacer la instalación manual: *Recuerda que debes tener instalado wget

wget http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz mkdir .dynamodb tar zxvf dynamodb_local_latest.tar.gz -C .dynamodb

Info: Github Issue Thread