Un recorrido rápido por AWS Lambda
Que es esto
AWS Lambda: este es un servicio informático que le permite ejecutar código para casi cualquier tipo de aplicación o servicio de servidor, todo sin administración. AWS Lambda realiza toda la administración por usted, incluido el mantenimiento del servidor y del sistema operativo, la asignación de recursos y el escalado automático, la supervisión y el registro de código. Todo lo que tiene que hacer es enviar su código en uno de los idiomas que admite AWS Lambda.
¿Por qué usarlo?
- El dinero Paga solo por el tiempo cuando el servicio se está ejecutando.
- Velocidad. Lambda se eleva y trabaja muy rápido.
- Conveniencia Lambda tiene muchas características para integrarse con los servicios de AWS.
- Rendimiento En paralelo, se puede realizar, dependiendo de la región, desde un máximo de 1000 a 3000 copias. Y si lo desea, este límite puede aumentarse escribiendo apoyo.
Este enfoque tiene sus inconvenientes, no puede controlar el sistema operativo en el que se ejecuta el código, no puede controlar la CPU, la memoria y los recursos. Todo esto lo hace AWS.
Todo lo que puede hacer es elegir un idioma de la AWS Lambda compatible.
Que puede
La siguiente es una breve lista de las funciones principales de AWS Lambda. A continuación, consideraremos todo en orden.
1. Disparadores
Los desencadenantes son los "patógenos" de lambda. En cierto modo, lambda se puede comparar con PHP, en el sentido de que para nosotros se
ejecuta y muere . A continuación, consideraremos en detalle el mecanismo de trabajo. Por ahora, debe comprender que lambda es una función que se ejecuta a petición de los desencadenantes.
A continuación hay una lista de todos los desencadenantes posibles:API Gateway
AWS IoT
Kit de habilidades de Alexa
Alexa Smart Home
Balanceador de carga de aplicaciones
Frente a la nube
Eventos de vigilancia en la nube
Cloudwatch logs
CodeCommit
Activador de sincronización Cognito
Dynamodb
Kinesis
S3
SNS
SQS
Para cada uno de ellos, deberá configurar parámetros únicos que estén disponibles para estos desencadenantes. También puede configurar múltiples desencadenantes en una lambda. Depende del tipo de disparador si la lambda se ejecutará de forma síncrona o asíncrona.
Aviso: Tenga en cuenta que se puede hacer que la lambda se ejecute utilizando AWS CLI, AWS SDK en modo manual, pasando todos los parámetros necesarios. Incluyendo si se ejecutará sincrónicamente o no
Veamos un ejemplo:
1. API de puerta de enlace : le permite extraer el lambda en la solicitud http y requiere devolver el resultado al usuario Dicha operación no se puede realizar de forma asincrónica, porque requiere una respuesta Para operaciones síncronas, algunas funciones no están disponibles.
2. SQS : por ejemplo, si nuestra lambda procesa mensajes de SQS, no es necesario que devuelva el resultado a ningún lado y puede realizarse de forma asincrónica. Con la ejecución asincrónica, aparecen varias características nuevas, por ejemplo, podemos configurar la ejecución repetida en caso de error o enviar dichas solicitudes a la cola
SQS "muerta".
2. Permisos para los servicios de AWS
Estos son servicios de AWS a los que lambda tiene acceso predeterminado. ¿Qué significa esto? Siempre puede conectar AWS SDK a la función que va a escribir, y sin las teclas ni ningún parámetro de autorización, puede usar los servicios disponibles. Usted define todos los servicios disponibles en el
rol de IAM que usa para esta lambda.
Cada idioma utilizado tiene su propio SDK que puede comunicarse con los principales servicios de AWS.
Aviso: para cada lambda, configura el rol de IAM de la persona que ejecutará el lambda
Puede configurar una red virtual para su lambda, por ejemplo, para
conectarse de forma segura a
RDS .
4. Editor en línea
AWS Lambda también ofrece la posibilidad de editar el código de su función directamente desde la interfaz de su navegador.

5. Registro
Todas las solicitudes de lambda se registran en
CloudWatch , los datos sobre el tiempo de ejecución y la memoria también se registran allí, estos datos pueden ser muy útiles para establecer límites. Además, el código tiene la capacidad de registrar sus propios datos (por ejemplo, en Node.js a través de console.log).
Además, siempre puede ver estadísticas sobre el uso de lambda en la pestaña
Supervisión .
6. Variables de entorno
Tiene la oportunidad de transferir variables de entorno de forma segura al código, lo que le permite configurar partes importantes del sistema sin entregar código. Es posible
encriptar variables de entorno a través de claves.Aviso: tenga en cuenta que hay una lista de variables de entorno predefinidas
7. Código
Ahora la parte más interesante, la lambda misma consta de varias partes.1. Capas : la capa inferior. No es necesario, pero si necesita agregar algunas bibliotecas para usar el lambda, debe colocarlas por separado del código principal, por lo que ahorrará mucho en la cantidad de código principal y la velocidad de la función en sí.
Las capas en AWS Lambda son algo similares a las
capas en la ventana acoplable , ya que son permanentes con respecto a la función y deben cambiarse por separado. También se pueden reutilizar en otras lambdas.
2. Entorno de función : el código debe contener necesariamente una función que se ejecutará directamente cada vez que
se inicie lambda
(Handler) . Sobre ella abajo. Y frente a ella está su entorno, que le preguntamos. El hecho es que la gestión de recursos ocurre de tal manera que este entorno se almacena por separado de la función durante un tiempo después de su finalización. Y en el próximo inicio, se reanuda sin gastar tiempo y recursos en la inicialización. Por lo tanto, todo lo que sea posible debe inicializarse en la función misma, por ejemplo, configuración, conexión de bibliotecas, etc.
3. Controlador : el código directamente ejecutado, dependiendo del idioma, se define de manera diferente. Por ejemplo, tome Node.Js. Para que su código se ejecute, necesita:
- archivo js - 1pc
- export.yourFunction = () => {// Su código} - 1pc
Por defecto, index.js se inicia y busca una función llamada "controlador" en él. Entonces lo realiza. Su función puede ser asíncrona en el código. Esto no afecta la ejecución síncrona de lambda.
A continuación hay un código de muestra, intentaré describir lo que sucede allí:
8. Versionado
El servicio admite versiones convenientes. En resumen, podemos emitir una versión para cada copia descargada. Y agregue alias que apuntan a alguna versión. Como funciona Vea la tabla a continuación.

Y así, ahora veamos qué hay que hacer para obtener lo que vemos en el diagrama
Estado uno
- Crea la primera versión de nuestra lambda. Junto con la primera versión, creamos un puntero a la versión de "$ LATEST" . Siempre indica la última versión agregada.
- Agregue el alias "Dev" . Aquí elegimos dónde vincular, tenemos varias opciones: crear un puntero a un número de versión específico, en nuestro caso "1" , vincular el puntero a "$ LATEST" o vincular a otro alias. En este caso, adjuntamos al puntero "$ LATEST" , y ahora nuestro alias "Dev" siempre apuntará a la última rama, por lo que siempre podemos probar nuestra aplicación con la última versión de lambda en el entorno de desarrollo. Y si de repente necesitamos verificar cómo funciona en la versión anterior, solo necesitamos cambiar el alias en el disparador o cambiar el enlace en la versión sin tocar nuestra aplicación
- Agregue el alias Stage y vincúlelo a la primera versión de nuestra lambda
- Agregue el alias "Prod" y repita lo que hicimos para el "Stage"
Aviso: aquí se describe cómo trabajar con alias en la práctica. La parte práctica sobre lambda estará en el próximo artículo junto con SQS
Y así, ahora tenemos algo incomprensible, de hecho 3 alias se refieren a una versión, no está claro. Pero nada, todo en orden.Segundo estado
- Cree una segunda versión de nuestro lambda (es posible agregar la segunda salida de "Hola mundo"). Aquí quiero señalar que en este momento "$ LATEST" se verá inmediatamente en la segunda versión. Y dado que "Dev" está vinculado a "$ LATEST" , también verá la segunda versión.
- A continuación, queremos que nuestro Stage vea la segunda versión. Ahora está vinculado a la versión "1" . Aquí necesitamos cambiar manualmente la versión indicada por "Stage ".
- Alégrate Obtuvimos lo que vemos como el segundo estado en la tabla. Es decir, nuestro "Prod" mira la primera versión, y "Dev" y "Stage" en la segunda.
Tercer estado
Ahora, para obtener el tercer estado, solo necesitamos agregar un par de líneas más a nuestro código y habrá una tercera versión de nuestra lambda. Y
"Dev" ahora la mirará.
Resumir
¿Y qué tenemos?
Un pequeño Rápido Relativamente barato. Autoscale. Versionado Función.
En este artículo, consideramos solo la parte teórica, la familiaridad con este servicio. Igual que con
SQS en el último artículo. En el próximo artículo, consideraremos cómo interactúan estos dos servicios entre sí y, en forma práctica, aprenderemos cómo configurarlos y usarlos.