AWS Lambda: introducción
AWS Lambda es un servicio que se encarga de calcular su código sin ningún servidor. Se dice que es computación sin servidor. El código se ejecuta en función de la respuesta de eventos en los servicios de AWS, como agregar / eliminar archivos en el depósito S3, actualizar Amazon DynamoDBtables, solicitud HTTP desde la puerta de enlace de Amazon Api, etc.
El código AWS Lambda puede escribirse en NodeJS, Java, C #, Python y Go. Este capítulo hablará en detalle sobre la creación de la función AWS Lambda en la consola de AWS.
Consola de AWS
Inicie sesión en la consola de AWS en el enlace https://aws.amazon.com/console. Una vez que inicie sesión, lo redireccionará a la pantalla donde se muestran los servicios de AWS.
Ejemplo: crear una función
Comprendamos la funcionalidad de la consola de AWS con la ayuda de un ejemplo. Haga clic en Lambda (marcado arriba), se redirigirá para crear la función como se muestra a continuación:
Hacer clic Create function y la pantalla muestra los siguientes detalles:
Tenga en cuenta que, de forma predeterminada, la opción es Author from scratch. Esta opción le permite escribir el código Lambda desde cero. Solo tendrá una función simple conhello world mensaje.
La segunda opción Blue prints tiene los siguientes detalles.
Proporciona detalles del código ya escrito para algunos de los servicios de aws en idiomas disponibles con AWS Lambda. En caso de que necesite escribir código AWS Lambda para cualquier servicio que pueda registrarblue prints y empezar.
La tercera opcion Serverless Application Repository tiene la configuración de una aplicación sin servidor que ayudará a implementar el código AWS Lambda.
En la discusión más adelante, trabajaremos en la primera opción donde creamos la función lambda de AWS usando Author from scratch.
Antes de crear la función Lambda, necesitará un rol, es decir, permiso para trabajar con servicios de AWS y aws lambda. Posteriormente, el rol debe asignarse a la función aws lambda.
Creación de roles en la consola de AWS
Para crear un rol en la consola de AWS, vaya a los servicios de la consola de AWS y haga clic en IAM como se muestra a continuación:
Ahora, si hace clic en IAM, aparecerá la pantalla como se muestra a continuación:
Si selecciona Roles, puede ver los siguientes botones en la pantalla:
Ahora, haga clic en Create role. Le pedirá que elija el servicio donde necesita usar el rol creado.
Dado que necesitamos usar este rol con AWS Lambda, seleccione Lambda y haga clic en Next:Permissionsbotón como se muestra arriba. La siguiente pantalla muestra el nombre de la política que está disponible según los servicios de AWS. Puede seleccionar la política desde aquí:
Por ejemplo, si desea permiso para que AWS Lambda funcione con S3 y DynamoDB, debe seleccionar la política. En el cuadro de búsqueda, ingrese el servicio AWS y haga clic en la casilla de verificación. Puede seleccionar varias políticas y luego hacer clic enNext:Review.
También es posible crear su propia política. Por ejemplo, hay una tabla dynamodb y necesita otorgar permiso solo a esa tabla, en tales casos puede crear una política.
Haga clic en Create policycomo se muestra en la pantalla de arriba. A continuación se muestran los detalles que se muestran en la pantalla.
Escoge un Servicepara el que está creando la política. Más tarde, mostrará datos para acciones,resources y Request conditions.
Ahora, deberíamos elegir el servicio. SeleccionemosAWS Dynamodb de la búsqueda. Actions tiene los siguientes detalles:
Ahora, ingrese el Access leveldesea donar a DynamoDB. Luego,resources mostrará los siguientes detalles:
Ahora, seleccione el tipo de recurso de la tabla. Puede ver el siguiente resultado:
Para obtener permiso en la mesa, necesita Add ARN. ARN son los detalles que son exclusivos de la tabla creada en AWS DynamoDB. Obtendrá los detalles cuando se cree la tabla en dynamodb.
Si hace clic en Add ARN y mostrará los siguientes detalles:
Ahora, si ingresa al ARN y el Region, Account y Tablese completará el nombre. Deberías hacer clicAddbotón para agregar la política. Del mismo modo, puede crear políticas para otros servicios.
Aquí, hemos seleccionado dos políticas AmazonS3FullAccess y AmazonDynamoDBFullACcess. Hemos otorgado acceso completo a S3 y DynamoDB en ese rol. Sin embargo, se sugiere que otorgue permiso solo a los depósitos y tablas necesarios.
Puede seguir los pasos descritos anteriormente para crear las políticas utilizando ARN.
Paso 1
Hacer clic Create rolebotón para crear el rol. Todos los roles creados se muestran como se muestra:
Paso 2
Tenga en cuenta que puede seleccionar el rol que necesita en caso de que necesite alguna modificación para el rol creado. Si seleccionamosAuthor from scratch option, tienes que entrar Name, Runtime and Role.
Paso 3
Puede observar los siguientes detalles en Runtime menú desplegable -
Paso 4
Puede seleccionar el tiempo de ejecución de su elección y proceder como se muestra.
Role el menú desplegable tiene las siguientes opciones:
Choose an existing role − Esto mostrará todos los roles creados en los roles de IAM.
Create new role from template(s) −Esto le permitirá crear un rol y mostrará el permiso para ser seleccionado para ese rol. Observe la captura de pantalla para una mejor comprensión.
Create a custom role − Esto permite al usuario crear políticas como comentamos anteriormente.
Paso 5
Selecciona el runtime, roley agregue la función. Haga clic enCreate functionbotón para crear la función lambda. La siguiente pantalla que se muestra es la siguiente:
Partes de la función AWS Lambda
Hay dos partes para la función AWS Lambda:Configuration y Monitoring. Discutamos cada uno en detalle.
Configuración
Las siguientes funcionalidades están incluidas en la Configuración.
Add Triggers
Los activadores que se necesitan para agregar a la función AWS Lambda se muestran de la siguiente manera:
Tenga en cuenta que cuando seleccionamos un disparador, necesitamos agregar los detalles de configuración para ese disparador. Por ejemplo, para el disparador S3, debemos seleccionar el nombre del depósito; para el disparador de Dynamodb, debemos seleccionar el nombre de la tabla.
Ejemplo
Veamos un ejemplo de detalles de configuración para un disparador S3:
Ahora, agregue detalles de configuración para el disparador S3 agregado -
Aquí debe seleccionar el bucket name, event type en el que desea activar Lambda, prefijo y patrón de filtro si lo hay y Add el gatillo.
Agregar código en Lambda
Ahora, debemos centrarnos en el código Lambda que se escribirá. Para agregar código en aws lambda, hay tres opciones:
- Usando el editor en línea
- Usando archivo .zip
- Cargar archivo desde Amazon S3
Se muestra en la captura de pantalla que se muestra a continuación:
Analicemos cada uno de ellos en detalle.
Using the inline editor
El editor de código en línea donde puede escribir su código es el siguiente:
Puede escribir su código eligiendo el idioma de su elección. Puede elegir el tiempo de ejecución nuevamente aquí.
Observe la siguiente captura de pantalla para una mejor comprensión:
El código debe estar escrito en index.js.Handler. Los detalles diferirán según el tiempo de ejecución. pornodejs, está filename.export function que es ahora mismo index.lambda handler.
Upload a .ZIP file
Primero puede escribir el código, comprimirlo y cargar el archivo zip seleccionando Upload a .ZIP file.
Upload a file from Amazon S3
Puede cargar el archivo en el depósito S3 y elegir la opción Upload a file from Amazon S3.
Tenga en cuenta que para .ZIP y S3 no será posible cambiar el tiempo de ejecución.
Variables de entorno
Toman pares clave-valor y los comparten con el código AWS Lambda. Podemos utilizar variables de entorno en AWS Lambda para almacenar los detalles de la conexión de la base de datos, los detalles del archivo para almacenar la salida, los detalles del archivo de registro, etc.
Etiquetas
Son pares clave-valor que se agregan a AWS Lambda para organizar mejor la función cuando se utilizan en diferentes regiones. Para un caso de uso simple, no es necesario. Cuando se crean muchas funciones Lambda, el etiquetado ayuda a filtrar y administrar las funciones Lambda.
Rol de ejecución
Puede cambiar el rol nuevamente aquí si no se hizo correctamente al comienzo de la creación de la función Lambda. Puede actualizar o crear un nuevo rol aquí. Proporciona las mismas opciones que se mostraron al inicio de la creación de la función Lambda.
Ajustes básicos
Aquí debe ingresar la breve descripción de lo que está haciendo su función Lambda. Seleccione la memoria y el tiempo de espera necesarios para la función Lambda.
Red
Esto le permite seleccionar la VPC que le permitirá acceder a la función Lambda desde la VPC. De forma predeterminada, no se selecciona ninguna VPC.
Depuración y manejo de errores
Para la depuración y el manejo de errores, puede seleccionar el servicio AWS para enviar los detalles. Las opciones disponibles sonNone, SNS y SQS.
Concurrencia
Esto le permite asignar un límite específico de ejecuciones simultáneas permitidas para esta función.
Auditoría y cumplimiento
Contiene registros que se administran con la ayuda de AWS CloudTrail.
Una vez hecho esto, debe guardar los cambios usando el botón Guardar como se muestra aquí -
Ahora, si hace clic en Test, le pedirá un evento de prueba. Puede aprobar un evento de prueba de muestra de la siguiente manera:
El evento de prueba creado es como se muestra aquí:
Ahora, guarde el evento de prueba y haga clic en el botón de prueba para ver la ejecución de la función AWS Lambda:
El código para index.js es como sigue -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log(event.key1);
console.log(event.key2);
console.log(event.key3);
callback(null, 'Lambda test');
};
Tenga en cuenta que la función de devolución de llamada se llama cuando hay un error o éxito. Si tiene éxito, puede verLambda test se mostrará.
Vigilancia
Seleccione la pestaña de supervisión para ver los detalles de ejecución de la función Lambda. Los gráficos muestran los detalles del tiempo de ejecución, errores ocurridos, etc.
También puede ver los registros en Cloudwatch. Para ello, vaya a los servicios de AWS y seleccione cloudwatch como se muestra:
Ahora, seleccione los registros del lado izquierdo e ingrese el nombre de su función en el filtro: