En el laboratorio anterior hemos securizado el endpoint que nos devuelve todos los eventos. Ahora vamos a crear y securizar el resto de endpoint:
- Crear endpoint para dar de alta eventos (POST /events)
- Crear endpoint para obtener los eventos de un usuario (GET /events/me)
- Crear endpoint para recuperar el detalle de un evento (GET /events/{eventid})
- Crear endpoint para actualizar un evento (PUT /events/{eventid})
- Crear endpoint para eliminar un evento (DELETE /events/{eventid})
A través de este endpoint se podrán crear nuevos eventos.
Para crear el endpoint, accedemos al API que hemos creado ("API_EVENTS_XXXX"):
- Pinchamos en /events
- Hacemos click en Actions y luego en Create Method. Elegimos POST.
- En la ventana abierta:
- En Integration Type, lo dejamos a "Lambda Function".
- En Lambda Region, lo dejamos a la región que estemos usando durante todos los laboratios.
- En Lambda Function, elegimos la función lambda para crear nuevos eventos.
- Hacemos click en Save
- Hacemos click en Method request.
- En la sección de settings:
- En Authorization, elegimos el authorizer creado para la API.
- En OAuth Scopes, lo dejamos a "openid". :warning:(Esto solo es por propósitos de testing para usarlo desde Postman. Cuando lo integremos con la app, lo dejaremos a None).:warning:
- En Request Validator, lo dejamos a "None".
- En API Key Required, lo dejamos a "True".
Lo primero que tenemos que hacer es desplegar la API:
- Click en Actions.
- Click en Enable CORS.
- Click en Enable CORS and replace existing CORS headers*.
- Volvemos atrás y hacemos click en Actions.
- Click en Deploy API.
- Elegimos el stage "prod" y damos a Deploy.
Después, abrimos postman:
- Nos aseguramos que estamos usando el entorno events.
- Hacemos click en Post events, en el menu de la izquierda en la colección events.
- Vamos a la pestaña Authorization y nos aseguramos que el campo Access Token está relleno. En caso de que no, damos a Get access Token, y seguimos los pasos anteriores.
- Vamos a la pestaña de Body, he introducimos un json con el evento a crear, similar al siguiente:
{
"title": "Hola",
"location": "Madrid",
"date": "1997-01-01",
"description": "dfnsbfiusduigsf",
"addedBy": "[email protected]",
"id": ""
}
- Hacemos click en Send, y deberiamos de recibir un 200 OK. En caso de que recibamos un 401, tenemos que generar un nuevo token. Para ello, vamos a la pestaña Authorization, y damos a Get Access Token, y seguimos los pasos anteriores.
Finalmente, para que nuestro endpoint se pueda utilizar desde nuestra aplicación Angular, volvemos al Api Gateway, y dentro de method request, debemos dejar el campo OAuth Request a None, y después tenemos que desplegar la API. Esto implica que este endpoint no vamos a poder probarlo desde Postman.
Este endpoint nos permitirá obtener los eventos del usuario autenticado.
Para crear el endpoint, accedemos al API que hemos creado ("API_EVENTS_XXXX"):
- Pinchamos en /events
- Hacemos click en Actions y luego en Create Resource:
- Resource Name: "Mis eventos"
- Resource Path: "me"
- Hacemos click en Create Resource.
- Hacemos click en /me. Luego en Actions y en Create Method. Elegimos GET.
- En la ventana abierta:
- En Integration Type, lo dejamos a "Lambda Function".
- En Lambda Region, lo dejamos a la región que estemos usando durante todos los laboratios.
- En Lambda Function, elegimos la función lambda para obtener los eventos de un usuario.
- Hacemos click en Save
- Hacemos click en Method request.
- En la sección de settings:
- En Authorization, elegimos el authorizer creado.
- En OAuth Scopes, lo dejamos a None.
- En Request Validator, lo dejamos a "None".
- En API Key Required, lo dejamos a "True".
- Volvemos atrás, y hacemos click en Integration Request:
- En Mappings Template:
- Hacemos click en When there are no templates defined (recommended)
- Hacemos click en Add Mapping Template y escribimos "application/json"
- En el editor que se nos ha abierto ponemos:
{ "addedBy" : "$context.authorizer.claims.email" }
- Hacemos click en Save
Como en el caso de crear eventos, tendriamos que desplegar la API. Después, desde Postman, dentro de la colección events, debemos seleccionar la petición que se corresponde con nuestro endpoint. En este caso, además, debemos hacer un paso adicional:
- Vamos a la pestaña Authorization
- Hacemos click en Get New Access Token.
- Validamos que los datos son correctos.
- Hacemos el login.
- En la respuesta recibimos, entre otros:
- accessToken: nos da acceso a la API, pero no tememos información del usuario (en este caso el email).
- idToken: nos da accesso a la API y ademas tenemos información del usuario, en este caso, el email.
- Copiamos el idToken.
Postman copia el accessToken, pero este no nos vale, porque en el mapping template del endpoint, necesitamos obtener el email del usuario, que está en el idToken.
- Cerramos la ventana y lo pegamos en el campo AccessToken.
- Hacemos click en Send.
Este endpoint nos permitirá obtener el detalle de un evento por el identificador.
Para crear el endpoint, accedemos al API que hemos creado ("API_EVENTS_XXXX"):
- Pinchamos en /events
- Hacemos click en Actions y luego en Create Resource:
- Resource Name: "Eventos por id"
- Resource Path: "{eventid}"
- Hacemos click en Create Resource.
- Hacemos click en /{eventid}. Luego En Actions y en Create Method. Elegimos GET.
- En la ventana abierta:
- En Integration Type, lo dejamos a "Lambda Function".
- En Lambda Region, lo dejamos a la región que estemos usando durante todos los laboratios.
- En Lambda Function, elegimos la función lambda para obtener eventos por su id.
- Hacemos click en Save
- Hacemos click en Method request.
- En la sección de settings:
- En Authorization, elegimos el authorizer creado.
- En OAuth Scopes, lo dejamos a "openid".
⚠️ (Esto solo es por propósitos de testing para usarlo desde Postman. Cuando lo integremos con la app, lo dejaremos a None).⚠️ - En Request Validator, lo dejamos a "None".
- En API Key Required, lo dejamos a "True".
- Volvemos atrás, y hacemos click en Integration Request:
- En Mappings Template:
- Hacemos click en When there are no templates defined (recommended)
- Hacemos click en Add Mapping Template y escribimos "application/json"
- En el editor que se nos ha abierto ponemos:
{ "id": "$input.params('eventid')" }
- Hacemos click en Save
Como en el caso de crear eventos, tendriamos que desplegar la API. Después, desde Postman, dentro de la colección events, la que se corresponde con nuestro endpoint. Para este caso, podemos modificar en las variables de entorno de Postman eventid, poniéndole el id de un evento existente.
Finalmente, para que nuestro endpoint se pueda utilizar desde nuestra aplicación Angular, volvemos al Api Gateway, y dentro de method request, debemos dejar el campo OAuth Request a None, y después tenemos que desplegar la API. Esto implica que este endpoint no vamos a poder probarlo desde Postman.
Este endpoint nos permitirá editar un evento.
Para crear el endpoint, accedemos al API que hemos creado ("API_EVENTS_XXXX"):
- Hacemos click en /{eventid}. Luego en Actions y en Create Method. Elegimos PUT.
- En la ventana abierta:
- En Integration Type, lo dejamos a "Lambda Function".
- En Lambda Region, lo dejamos a la región que estemos usando durante todos los laboratios.
- En Lambda Function, elegimos la función lambda para editar eventos.
- Hacemos click en Save
- Hacemos click en Method request.
- En la sección de settings:
- En Authorization, elegimos el authorizer creado.
- En OAuth Scopes, lo dejamos a "openid"
⚠️ (Esto solo es por propósitos de testing para usarlo desde Postman. Cuando lo integremos con la app, lo dejaremos a None).⚠️ - En Request Validator, lo dejamos a "None".
- En API Key Required, lo dejamos a "True".
Como en el caso de crear eventos, tendriamos que desplegar la API. Después, desde Postman, dentro de la colección events, la que se corresponde con nuestro endpoint.
Finalmente, para que nuestro endpoint se pueda utilizar desde nuestra aplicación Angular, volvemos al Api Gateway, y dentro de method request, debemos dejar el campo OAuth Request a None, y después tenemos que desplegar la API. Esto implica que este endpoint no vamos a poder probarlo desde Postman.
Este endpoint nos permitirá borrar un evento.
Para crear el endpoint, accedemos al API que hemos creado ("API_EVENTS_XXXX"):
- Hacemos click en {eventid}. Luego en Actions y en Create Method. Elegimos DELETE.
- En la ventana abierta:
- En Integration Type, lo dejamos a Lambda Function.
- En Lambda Region, lo dejamos a la región que estemos usando durante todos los laboratios.
- En Lambda Function, elegimos la función lambda para eliminar eventos.
- Hacemos click en Save
- Hacemos click en Method request.
- En la sección de settings:
- En Authorization, elegimos el authorizer creado.
- En OAuth Scopes, lo dejamos a "openid".
⚠️ (Esto solo es por propósitos de testing para usarlo desde Postman. Cuando lo integremos con la app, lo dejaremos a None).⚠️ - En Request Validator, lo dejamos a "None".
- En API Key Required, lo dejamos a "True".
- Volvemos atrás, y hacemos click en Integration Request:
- En Mappings Template:
- Hacemos click en When there are no templates defined (recommended)
- Hacemos click en Add Mapping Template y escribimos "application/json"
- En el editor que se nos ha abierto ponemos:
{ "id": "$input.params('eventid')" }
- Hacemos click en Save
Como en el caso de crear eventos, tendriamos que desplegar la API. Después, desde Postman, dentro de la colección events, la que se corresponde con nuestro endpoint.
Finalmente, para que nuestro endpoint se pueda utilizar desde nuestra aplicación Angular, volvemos al Api Gateway, y dentro de method request, debemos dejar el campo OAuth Request a None, y después tenemos que desplegar la API. Esto implica que este endpoint no vamos a poder probarlo desde Postman.
En este laboratorio, hemos completado el resto de nuestra API. Además, la hemos securizado haciendo uso de Cognito y de un plan de uso asociado a un api-key para controlar el consumo. El siguiente paso, es integrarla con nuestra aplicación frontend.