¿Estás listo para desplegar aplicaciones en la nube con eficacia y flexibilidad? Prepara tu entorno de desarrollo con Serble y AWS, lo que te permitirá trabajar tanto en local como en la nube. Aquí te mostramos cómo instalar todas las herramientas necesarias en un sistema operativo Windows, y te guiaremos paso a paso para instalar algunas de las más esenciales, como Java, AWS CLI, Git, Node.js, Postman y Python.
¿Qué herramientas necesitas para empezar?
Es esencial conocer qué herramientas son requeridas antes de comenzar con cualquier instalación. En este curso, utilizaremos una variedad de herramientas que se complementan entre sí para crear, gestionar y desplegar aplicaciones serverless de manera eficiente.
Java: Necesario para integrar DynamoDB con el Serble as Framework.
AWS CLI: Facilita la gestión y configuración de servicios AWS desde la línea de comandos.
Git: Utilizado para gestionar repositorios de código.
Node.js: Proporciona el ambiente de ejecución para aplicaciones JavaScript.
Postman: Herramienta para pruebas de API mediante solicitudes HTTP.
Python: Utilizado para desarrollar funciones Lambda con Python.
¿Cómo instalar y configurar Java?
Para maximizar el uso de DynamoDB, necesitamos Java. La instalación es sencilla. Descarga el archivo MSI desde la página de Oracle, sigue las indicaciones para instalarlo y luego sigue estos pasos para configurar la variable de entorno JAVA_HOME:
# Ejemplo en Windows- Ve a "Sistema">"Configuración Avanzada">"Variables de Entorno".- Crea una nueva variable de sistema denominada JAVA_HOME.
- Asigna como valor la ruta de tu archivo ejecutable de Java (ej.: "C:\Program Files\Java\jdk-xx").
¿Cómo se instala el CLI de AWS?
Este es un paso crucial para ejecutar y controlar servicios en AWS. Para instalar el CLI de AWS en Windows:
Dirígete al sitio web de AWS para el CLI y sigue los pasos que se indican para Windows.
Usa el comando msixsec.exe en tu terminal para iniciar la instalación.
Configura tus credenciales de AWS usando el comando aws configure:
Introduce tu Access Key, Secret Key, región por defecto (ej.: US East 1), y formato de salida preferido (JSON).
¿Cómo instalar y usar Git?
Para clonar repositorios y realizar otras operaciones de control de versiones, se utiliza Git. La instalación es simple:
Descarga el instalador de Git desde el sitio oficial.
Sigue los pasos del asistente de instalación (Next, Next, Next).
Valida la instalación clonando un repositorio:
# Ejemplo en Windows terminalgit clone <URL-del-repositorio>
¿Cómo instalar Node.js y Postman?
Node.js proporciona el entorno de ejecución JavaScript necesario. Para Node.js:
Dirígete a nodejs.org para descargar la versión LTS recomendada.
Completa la instalación siguiendo los pasos del asistente.
En el caso de Postman:
Descarga Postman del sitio oficial y ejecuta el instalador.
Ejecuta y busca cualquier petición HTTP como una prueba rápida.
¿Cómo preparar Python?
Para funciones Lambda con Python, se requiere la instalación del lenguaje:
Descarga Python 3.11 desde el sitio web oficial.
Realiza la instalación eligiendo las configuraciones por defecto.
Valida con un comando simple en terminal:
# Ejemplo en terminalpython --version
¿Cómo trabajar con Serble as Framework?
Instalar Serble es uno de los últimos pasos esenciales. Utiliza NPM para instalar las librerías necesarias:
# Ejemplo en el directorio del proyectonpminstall
Además, para facilitar el trabajo en ambientes locales, asegúrate de instalar y configurar el DynamoDB Local con el comando:
sls dynamodb install
Con esta guía, todas tus herramientas están listas para usarse con Serble as Framework. Este setup es la base para comenzar a crear aplicaciones serverless poderosas, implementando servicios en la nube y gestionándolos eficientemente. ¡Adelante, el mundo de la nube te espera!
Error:Error getting DynamoDb local latest tar.gzlocationundefined:403
Si tienes este error en la instalación de dynamodb plug-in es porque AWS cambio el dominio de descarga del plugin. Para solucionar esto basta con editar manualmente la propiedad de download_url en node_modules/dynamodb-localhost/dynamodb/config.json a https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz y la importación de http a https en node_modules/dynamodb-localhost/dynamodb/installer.js
Luego hacer la instalación normal
serverless install dynamodb
Funcionó de maravilla. ¡Gracias!
Gracias, excelente. Lo unico que al final es sls dynamodb install
Si después de solucionar el error que menciona @Pablo Ortiz te enfrentas con un error relacionado a:
"UnrecognizedClientException: The Access Key ID or security token is invalid.: DynamoDB - Error -"
Hay 2 pasos faltantes a corregir que no se mencionan en el video:
En el archivo serverless.yml del fichero clonado, hay que modificar en el apartado de plugins:
- serverless-dynamodb-local por éste otro:
- serverless-dynamodb
Posterior, necesitamos desinstalar el modulo viejo (olvidado por su creador y de dificil comunicación para realizarle cambios) por el nuevo (actualmente con soporte y actualizado)
Eso se logra con unos pasos en npm el cual se detallan en el post del repo https://github.com/99x/serverless-dynamodb-local/issues/294#issuecomment-1619297733
En conclusión, los pasos son:
1.1) Uninstall serverless-dynamodb-local, e.g. npm uninstall serverless-dynamodb-local
1.2) Install serverless-dynamodb, e.g. npm install serverless-dynamodb
Ahora que ya tenemos el modulo de dynamodb actualizado en npm, el ultimo paso es agregar tus llaves en el archivo handler.js localizado en el directorio de "Serverless-framework\getusers"
Aquí tienes que ++agregar tus llaves del usuario de aws, tanto la accessKeyId como la secretAccessKey.++
Con éstos cambios al día de 04 de Julio 2023, funciona correctamente. Cabe resaltar que ésto puede cambiar y NO ES UNA SOLUCION DEFINITIVA, por lo mismo que comenta el profesor de ser una comunidad de código abierto.
Espero le sirva a más de alguno 😄✌
Parcero excelente aporte.
Se debería explicar en la clase esto, me parece importante, ademas del hecho que si estamos ingresando a AWS con nuestro usuario root no es recomendable estar colocando nuestros acces keys por ahí en código.
A la fecha, 17/07/2023, funciona el procedimiento indicado.
El plugin de dynamodb para Serverless Framework tiene mejoras constantemente, parece ser que en las nuevas versiones disponibles se introdujo un error que genera este comportamiento al hacer la instalación 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 instalacion manual:
*Recuerda que debes tener instalado wget
En Ubuntu tuve ese error, se soluciono facil con los comandos, gracias
Seguí tu recomendación, pero luego de haber ejecutado el npm audit fix --force, me aparece el siguiente error:
Error:
TypeError: Class extends value undefined is not a constructor or null
No puedo creer que este tan desactualizado esta parte.
Platzi, por que dejan que pase esto, mucha perdida de tiempo tratando de hacer que funcione.
Estoy cansado de estos cursos desactualizados
Si te ha salido el error UnrecognizedClientException: The Access Key ID or security token is invalid. al ejcutar el comando sls offline start, para solucionarlo, debemos:
Auditar los paquetes con el comando npm audit fix --force esto auditará todos los paquetes y dependencias de npm.
Una vez que termine de auditar, podemos volver a ejecutar el comando sls offline start.
Sí todo ha salido ok, el servicio debió levantarse correctamente.
Este problema puede ocurrir por:
El Access Key ID y Secret Access Key son incorrectos.
Las credenciales ya no son validas.
El usuario no tiene permisos, esto se puede chequear en IAM (Identity and Access Management) o usando el CLI con el comando aws iam list-user-policies --user-name <user-name>
Problemas con el SDK de AWS.
excelente aporte, muchas gracias por el dato me sirvió mucho
Muchas gracias...
Si no les funciona en windows usando PowerShell:
sls --help
Ejecuten el siguiente comando para remover el alias y se soluciona:
Remove-Item alias:sls
gracias, esto me funciono
Buenas, me esta saliendo este error al ingresar el ultimo comando "sls offline start"
UnrecognizedClientException:TheAccessKeyID or security token is invalid.
Sera porque el usuario no tiene permisos? Donde verifico eso? Muchas gracias
JPG, lograste resolver este inconveniente? A mi me sale lo mismo pero al ejecutar el primer get:
× Unhandled exception in handler 'get-users'.
× UnrecognizedClientException: The Access Key ID or security token is invalid.
× The Access Key ID or security token is invalid.
Por favor, me avisas
Esto es porque el curso esta desactualizado ya que AWS ha cambiado como se validan las Keys para DynamoDB
Al dia de hoy, la version actual de npm 22 no es compatible con los paquetes del tipo serverless offline, la recomendacion segun la IA es usar la version de npm 20, la cual si lo permite, hay un adicional y es que hay que comentar el plugin del serverless.yaml:
plugins:
# - serverless-offline
- serverless-dynamodb-local
asi y posteriormente instalar el paquete por aparte:
npm install serverless-offline@12.0.4 --save-dev
ya con eso funciona el sls --help y seguir avanzando con la instalacion de dynamoDB
A fecha de hoy, 28 de noviembre del 2024, hay muchos errores en el proceso de instalación, Serverless framework cambió los comandos y se torna muy difícil avanzar. Creo que tendré que abandonar el curso :(
Acabo de hacer un fork del proyecto con las configuraciones necesarias para que no de error y documentado todo el proceso para su configuración en caso de requerir. Les dejo el link del repositorio:
Gracias!! Funciono
Por alguna razón serverless framework solo funciona en la terminal cuanto escribo en nombe completo y no cuando escribo "sls", tienen alguna idea de lo que pueda ser?
Hola Pablo, cuentame porfa como realizaste la instalacion del framework? usaste el flag -g para indicar que es una instalacion global?
Es decir?
npm install -g serverless
La otra razón por la cual puede fallar es por la variable de entorno PATH, puedes validar si tienes tu folder de npm referenciado en la variable de entorno Path?
C:\Users\<NombreDeUsuario>\AppData\Roaming\npm
De igual forma, dejanos mas info:
Que sistema operativo tienes?
Como realizaste la instalación?
Tienes algún log de error que podamos ver?
Hola, el comando "serverless" te da un buen resultado?
Intenta ejecutar "whereis sls" para ver que te sale, si no te sale nada intenta instalar serverless framework de forma global con
npm i -g serverless
usar npx tambien es una manera de llamar el binario, puedes intentarlo:
npx serverless
Imposible avanzar, ahora me sale el siguiente error:
Running"serverless"from node_modules
DynamodbLocalStarted,Visit: http://localhost:8000/shell
Error:Unable to initialize main classcom.amazonaws.services.dynamodbv2.local.main.ServerRunnerCaused by: java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseExceptionDynamoDBLocal failed to start with code 1
Me agrada mucho que el profesor dedicara una clase completa a la instrucción de instalación de los softwares que se usarán a lo largo del curso. Hay bastantes estudiantes que estarán usando alguna de estas herramientas por primera vez :smile
Imposible avanzar, he solucionado al menos 4 errores y no he podido empezar.
actualicen el curso por favor
Pienso que no es necesario que la clase sea tan básica al punto de enseñar a instalar GIT. Si alguien está interesado en hacer este curso, seguramente ya conoce GIT.
Es impresionante que con la capacidad de tener control de versiones, el maestro entregue un curso tan defectuoso
Ante el error
Serverless Framework install sls error:
"cmdlet Select-String at command pipeline position 1
Supply values for the following parameters:
Path[0] "
El error que estás experimentando al intentar instalar Serverless Framework con el comando sls en PowerShell se debe a un conflicto con un alias predeterminado de PowerShell. PowerShell tiene un cmdlet llamado Select-String que también se abrevia como sls. Cuando intentas ejecutar sls, PowerShell intenta ejecutar Select-String en lugar del comando de Serverless Framework.
Para resolver este problema, tienes algunas opciones:
1. **Usar el nombre completo del comando**:
Puedes evitar el conflicto utilizando el nombre completo del comando de Serverless Framework:
```bash
serverless
```
Por ejemplo, para desplegar, usarías:
```bash
serverless deploy
```
2. **Eliminar el alias de PowerShell**:
Si prefieres seguir utilizando sls, puedes eliminar el alias de PowerShell ejecutando el siguiente comando en tu sesión de PowerShell:
```powershell
Remove-Item alias:sls
```
Ten en cuenta que esto solo afectará a la sesión actual de PowerShell. Si deseas eliminar el alias permanentemente, tendrás que agregar ese comando a tu perfil de PowerShell.
3. **Usar otro alias para Serverless Framework**:
En versiones más recientes de Serverless Framework, se ha introducido un alias secundario slss que puedes usar sin conflictos en PowerShell:
```bash
slss
```
Estas soluciones deberían permitirte utilizar Serverless Framework en PowerShell sin problemas¹².
Si te sale Error getting DynamoDb local latest tar.gz location undefined: 403 lo resolvi de la siguiente manera:
- Editar el archivo **node_modules/dynamodb-localhost/dynamodb/config.json**, editar la propiedad **download_url** colocandole la URL donde se encuentra alojado actualmente el archivo **dynamodb_local_latest.tar.gz**.