Trabajar con Amazon API Gateway
La función AWS Lambda se puede invocar en HTTPSurl. Se puede hacer en GET, POST, PUT. Cuando se invoca la URL HTTPS, la función AWS Lambda también puede activarse y los datos pasados a HTTPS medianteget/post puede estar disponible dentro de AWS Lambda para usarse para insertar en DynamoDB o para enviar correo, etc.
Este capítulo trata en detalle sobre varios procesos involucrados en el trabajo con AWS lambda y API Gateway.
Procesos involucrados
Los siguientes son los procesos involucrados en trabajar con AWS lambda y API Gateway:
- Crear función de IAM para obtener permiso
- Crear función lambda de AWS
- Crear API Gateway
- Vincular la función lambda a la puerta de enlace api
- Pasando datos a la puerta de enlace de la API
Aquí se proporciona un diagrama básico que explica el funcionamiento de la puerta de enlace API y AWS Lambda:
Estos procesos se explican en detalle en este capítulo con capturas de pantalla relevantes.
Crear función de IAM para obtener permiso
En los servicios de Amazon, como se muestra a continuación, seleccione IAM para crear roles que utilizará la función Lambda.
Vaya a IAM y seleccione Roles desde la sección del lado izquierdo como se muestra a continuación -
Hacer clic Create role para la función Lambda.
Seleccione Lambda y haga clic en Permissionsen el fondo. Seleccione el permiso requerido para API Gateway y Lambda.
Busque la puerta de enlace API en la búsqueda y le mostrará todos los permisos relacionados. Aquí hemos elegido el acceso completo a la puerta de enlace API como se muestra a continuación:
Ahora, busque la puerta de enlace API y le mostrará todos los permisos relacionados. Aquí hemos elegido el acceso completo a la puerta de enlace API como se muestra a continuación:
También debe repetir el mismo proceso para las políticas.
Una vez que haya terminado de elegir las políticas necesarias, haga clic en Reviewpara el siguiente paso. Ingrese el nombre de la función según su elección, como se muestra a continuación:
Muestra las políticas adjuntas al rol. Hacer clicCreate role y hemos terminado con la creación del rol y podemos continuar con la función lambda.
Crear función AWS Lambda
Vaya a los servicios de AWS y haga clic en el servicio lambda para crear una función para conectarlo con la puerta de enlace api.
La pantalla de la interfaz de usuario para la función Lambda se muestra a continuación. Hacer clicCreate function para continuar con la creación de la función Lambda.
Ingrese el nombre de la función y elija el rol existente que hemos creado arriba.
Aparece un mensaje que indica que la función con el nombre lambdawithapigateway se crea correctamente.
Tenga en cuenta que aquí usaremos nodejstiempo de ejecución para escribir el código. El código de AWS conhelloworld el mensaje es como se muestra a continuación -
El código AWS Lambda está presente en index.jsarchivo. La función llamada manejador tiene los parámetros a saberevents, context y callback.
La función de devolución de llamada básicamente tiene el error y el mensaje de éxito. Tenga en cuenta que aquí no tenemos ningún código relacionado con el error, por lo que se pasa nulo y el mensaje de éxito esHelloWorld from lambda.
Por último, guarde los cambios agregados y procedamos a agregar la función Lambda a la puerta de enlace API.
Crear API Gateway
Inicie sesión en su cuenta de AWS y abra API Gateway como se muestra a continuación:
Haga clic en API Gateway y lo llevará a la pantalla donde se puede crear una nueva API Gateway.
Hacer clic Create API y agregue detalles como se muestra a continuación -
Haga clic en el Create APIen el lado derecho de la pantalla. Esto mostrará la API recién creada en el lado izquierdo de la pantalla.
Haga clic en el Actions menú desplegable para crear un nuevo recurso para la API.
Ahora, cree un nuevo recurso como se muestra a continuación:
Introducir el Resource NameComo se muestra abajo. Verá el nombre del recurso ingresado en la URL creada al final. Hacer clicCreate Resource y lo verá en la pantalla de la siguiente manera:
Añadir GET/POSTmétodos al recurso creado como se muestra a continuación. Seleccione el método deActions desplegable.
Haga clic en el GET método para agregar el método a la API.
El siguiente paso es la integración que lo integrará con la función Lambda. Ahora agregue la función Lambda como se muestra a continuación:
Vincular la función Lambda a API Gateway
Seleccione la función lambda creada anteriormente.
Guarde los cambios y podrá ver un cuadro de diálogo pidiendo permiso como se muestra a continuación:
Hacer clic OKpor el permiso. Estos son los detalles de ejecución entre la solicitud HTTP de la puerta de enlace de API y la función Lambda:
Ahora, implementemos los cambios de la puerta de enlace API. Para ello, debemos seleccionar elDeploy API desde Actions menú desplegable como se muestra a continuación -
Seleccione Deploy API. Le preguntará por el estado de implementación. SeleccioneNew Stage desde el menú desplegable Etapa de implementación y agregue el nombre de la etapa como Production.
Hacer clic Deploy y lo redireccionará a la URL como se muestra a continuación:
Selecciona el GETmétodo del lado izquierdo para obtener la URL. Abra la URL en una nueva pestaña para ver el mensaje de la función Lambda.
Este es un ejemplo básico de trabajo con AWS Lambda y AWS API Gateway. En el ejemplo anterior, hemos codificado el mensaje en la función Lambda.
Ahora, tomemos los detalles del mensaje de API Gateway. En caso de que la llamada HTTPS deba realizarse desde un dominio diferente, por ejemplo, una llamada AJAX a la API, debemos habilitar CORS para la puerta de enlace API creada.
Seleccione el recurso creado para la API y haga clic en Actions menú desplegable -
Ahora, Enable CORS abrirá la siguiente pantalla -
Puede utilizar algunos métodos para HABILITAR CORS. Access-Control-Allow-Origin está marcado como * lo que significa que permitirá obtener contenido de la puerta de enlace API desde cualquier dominio.
También puede especificar el nombre de dominio con el que desea trabajar con la API. Hacer clicEnable CORS and replace existing CORS headers y mostrará un mensaje de confirmación como se muestra a continuación:
Hacer clic Yes, replace existing valuespara habilitarlo. losEnable CORS la pantalla se ve como se muestra a continuación -
Pasar datos a API Gateway
Abra la API creada en API Gateway displayhelloworld como se muestra a continuación -
Hacer clic Integration Request para enviar datos como se muestra a continuación -
Escoger Body Mapping Templates y agrega el Content-Type para este ejemplo como application/json. Haga clic en el tipo de contenido agregado agregue los detalles de la siguiente manera:
Ahora, agregue la plantilla en formato JSON como se muestra a continuación:
Observe que hemos tomado el mensaje como parámetro para obtener datos de API Gateway y compartirlos con AWS Lambda. La sintaxis para obtener los detalles es la que se muestra arriba.
Ahora, implemente la API para que los cambios estén disponibles en la URL de API Gateway. Para esto, necesitamos cambiar la función Lambda para mostrar los datos basados en la URL de API Gateway. El código para la función Lambda se proporciona a continuación. Tenga en cuenta que tomamos el mensaje del evento y lo pasamos a la devolución de llamada.
exports.handler = (event, context, callback) => {
let message = event.message;
callback(null, message);
};
Ahora, guarde los cambios en Lambda y presione la URL para ver los cambios. Observe la captura de pantalla que se muestra a continuación:
Haga clic en la URL como se muestra a continuación:
https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
Observe que aquí estamos pasando un mensaje como una cadena de consulta a la URL GET. Entonces puede observar la salida como se muestra a continuación:
Lee los detalles enviados al mensaje desde la URL y los muestra en el navegador.