- Notifications
You must be signed in to change notification settings - Fork0
curso-serverless-lambda-APIGateway/hola-mundo
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
- Instalar serverless
- Hola mundo
- Endopoint con API Gateway
- Desarrollar en modo offline para evitar gastos en AWS
- Pasar y recoger parámetros en modo de segmento por la url
- Añadimos otra función a nuestro handler.js
- Eliminar proyecto de AWS
Para instalar serverless
sudo npm install -g serverless
Creamos unas nuevas credenciales en nuestra cuenta de AWS y copiamos la key y el secret para utilizarlo en la configuración del servicio
serverless config credentials --provider aws --key <key> --secret <secret>
Creamos el proyecto estableciendo el proveedor y el lenguaje en el template y le damos un nombre
serverless create --template aws-nodejs --name curso-sls-hola-mundo
Esto nos genera dos archivoshandler.js con la función que vamos a desarrollar:
module.exports.hello=asyncevent=>{return{statusCode:200,body:JSON.stringify({message: 'Go Serverless v1.O! Your function executed successfully!,input:event,},null,2)};}
yserverless.yml con los parámetros de configuración.
Para desplegar el proyecto en nuestra cuenta de AWS utilizaremos el siguiente comando:
sls deploy
Si únicamente queremos desplegar una función en concreto (caso de proyecto con muchas funciones)
sls deploy –f nombreFuncion –s entorno(dev, pro...)
Para ejecutar la función en remoto:
sls invoke -f nombreFuncion -s entorno(dev, pro...)
Si queremos ejecutarla en local añadimos el parámetrolocal después deinvoke
A esta invocación podemos pasarle parámetros de esta forma
sls invoke local -f hello -s dev -d '{"name": "Abel Alonso"}'
El parámetro llega a la función en la variableevent
En el archivoserverless.yaml añadimos dentro de la función el evento desencadenador:
functions:hello:handler:handler.helloevents: -http:path:hols-mundomethod:get
Mucho ojo con la tabulación entrehttp ypath
Volvemos a desplegar y el cambio relizado en serverless.yaml hará que en la lamda se genere un desencadenador de api gateway de forma automática. Podemos comprobar que esto funciona entrando en la URL que se genera al hacer el deploy.
En la consola de AWS podemos comprobar que efectivamente se ha creado un trigger para el get a esa url
Iniciamos el proyecto de node
npm init –y
Instalamos la libreria serverless offline
npm install serverless-offline
Añadimos el plugin al archivo de configuración serverless.yaml
service:curso-sls-hola-mundoplugins: -serverless-offline
De esta forma ya podemos ejecutar la función en local y hacer pruebas:
sls offline
Este comando levantará un servidor local con nuestra función:
Podemos pasar parámetros de segmento de la siguiente forma:
- .Editamos la ruta en el archivoserverless.yaml
functions:hello:handler:handler.helloevents: -http:path:hola-mundo/{name}method:get
- Modificamos la función en el archivohandler.js para utilizar éste parámetro
module.exports.hello=asyncevent=>{return{statusCode:200,body:JSON.stringify({message:'Hola S{event.pathParameters.name}!,},input:eventnull,2)};};
Añadimos otra función a nuestrohandler.js
module.exports.showUser=asyncevent=>{return{statusCode:200,body:JSON.stringify({message:'petición post',input:event['body'],},null,2)};};
Configuramos esta nueva ruta enserverless.yaml
functions:hello:handler:handler.helloevents: -http:path:hola-mundo/{name}method:getshowUser:handler:handler.showUserevents: -http:path:usermethod:post
Para trabajar de forma más limpia con los datos que llegan en el body, instalamos la librería querystring
npm install querystring
Incluimos la librería enhandler.js
constqueryString=require('querystring')
Y modificamos la función para aplicar la librería al body que nos viene en la llamada
module.exports.showUser=asyncevent=>{constbodyqueryString'body']);return{statusCode:200,body:JSON.stringify({message:'petici6n post',input:'Hola ${body.name} '${body.surname}`},null,2)};};
Para eliminar lo desplegado en AWS simplemente debemos ejecutar
sls remove
About
Resources
Uh oh!
There was an error while loading.Please reload this page.