Creación de una función Lambda con la consola - AWS Lambda

Creación de una función Lambda con la consola

En los siguientes ejercicios de introducción, creará funciones Lambda con la consola.

En el primer ejercicio, creará una función y utilizará el código predeterminado que creaLambda. La consola de Lambda proporciona un editor de código para lenguajes no compilados que permite modificar y probar el código con rapidez.

En el siguiente ejercicio, creará una función definida como una imagen de contenedor. Primero, cree una imagen de contenedor para el código de función y, a continuación, use la consola Lambda para crear una función con la imagen de contenedor.

Crear una función Lambda con código de función predeterminado

En este ejercicio de introducción, creará una función Lambda Node.js mediante la consola Lambda. Lambda crea automáticamente el código predeterminado para la función. A continuación, debe invocar la función Lambda de forma manual mediante los datos del evento de ejemplo. Lambda ejecuta la función y devuelve resultados. Seguidamente, puede verificar los resultados, incluidos los registros creados por la función Lambda y diferentes métricas de Amazon CloudWatch.

Creación de una función Lambda con la consola

  1. Abra la Página de funciones en la consola de Lambda.

  2. Elija Create function (Crear función).

  3. En Basic information (Información básica), haga lo siguiente:

    1. En Function name (Nombre de la función), escriba my-function.

    2. En Runtime (Tiempo de ejecución), confirme que Node.js 14.x esté seleccionado. Tenga en cuenta que Lambda proporciona tiempos de ejecución para .NET (PowerShell, C#) Go, Java, Node.js, Python y Ruby.

  4. Elija Create function (Crear función).

Lambda crea una función Node.js y un rol de ejecución que otorga a la función permiso para cargar los registros. La funciónLambda asume el rol de ejecución cuando se invoca la función y utiliza el rol de ejecución para crear credenciales para el AWS SDK y leer datos de orígenes de eventos.

Uso de la descripción general de la función

La Descripción general de funciones muestra una visualización de la función, que incluye desencadenadores, destinos y una capa configurada para la función.


          Una funciónLambda sin desencadenadores, destinos o capas.

Invocación de la función Lambda

Invoque la función de Lambda utilizando los datos del evento de muestra que se proporcionan en la consola.

Para invocar una función

  1. Después de seleccionar la función, elija la pestaña Prueba.

  2. En la sección Evento de prueba, elija Nuevo evento. En Plantilla, deje la opción predeterminada hello-world. Escriba un nombre para esta prueba y anote la siguiente plantilla de evento de muestra:

    { "key1": "value1", "key2": "value2", "key3": "value3" }
  3. Elija Save changes (Guardar cambios) y, a continuación, seleccione Test (Probar). Cada usuario puede crear hasta 10 eventos de prueba por función. Dichos eventos de prueba no están disponibles para otros usuarios.

    Lambda ejecuta la función en su nombre. El controlador de funciones recibe y procesa el evento de muestra.

  4. Si se realiza correctamente, puede ver los resultados en la consola.

    • El resultado de ejecución muestra el estado de ejecución correctamente. Para ver los resultados de ejecución de la función, expanda Detalles. Tenga en cuenta que el vínculo Registros abre la página Grupos de registros en la consola CloudWatch.

    • La sección Summary (Resumen) muestra la información principal proporcionada en la sección Log output (Resultado del registro) (la línea REPORT del registro de ejecución).

    • La sección de salida del registro muestra el registro que Lambda genera para cada invocación. La función escribe estos registros en CloudWatch. La consola de Lambda muestra estos registros para su comodidad. Elija Haga clic aquí para agregar registros al grupo de CloudWatch registros y abrir la página Grupos de registro en la consola CloudWatch.

  5. Ejecute la función (elija Test [Probar]) unas cuantas veces más para recopilar algunas métricas que podrá ver en el siguiente paso.

  6. Elija la pestaña Monitor (Monitoreo). Esta página muestra gráficos de las métricas que Lambda envía a CloudWatch.

    Para obtener más información acerca de estos gráficos, consulte Monitorización de funciones en la consola de AWS Lambda.

Eliminar recursos

Si ha terminado de trabajar con la función de ejemplo, elimínela. También puede eliminar el rol de ejecución creado por la consola y el grupo de registro que almacena los registros de la función.

Para eliminar una función Lambda

  1. Abra la Página de funciones en la consola de Lambda.

  2. Elija una función.

  3. Elija Actions (Acciones), Delete (Eliminar).

  4. En el cuadro de diálogo Delete function (Eliminar función), elija Delete (Eliminar).

Para eliminar el grupo de registros

  1. Abra la página Log groups (grupos de registros) de la consola CloudWatch.

  2. Seleccione el grupo de registros de la función (/aws/lambda/my-function).

  3. Elija Actions (Acciones), Delete log groups (Eliminar grupo(s) de registro(s).

  4. En el cuadro de diálogo Delete log group(s) (Eliminar grupo(s) de registro(s), elija Delete (Eliminar).

Para eliminar el rol de ejecución

  1. Abra la página Roles de la consola AWS Identity and Access Management (IAM).

  2. Seleccione el rol de la función (my-function-role-31exxmpl).

  3. Elija Delete role (Eliminar rol).

  4. En el cuadro de diálogo Delete role (Eliminar rol), elija Yes, delete (Sí, eliminar).

Puede automatizar la creación y limpieza de funciones, grupos de registros y roles con AWS CloudFormation y AWS Command Line Interface (AWS CLI). Para obtener información sobre aplicaciones de ejemplo totalmente funcionales, consulte Aplicaciones de muestra de Lambda.

Creación de una función definida como imagen de contenedor

En este ejercicio de introducción, utilizará la CLI de Docker para crear una imagen de contenedor y, a continuación, utilizará la consola Lambda para crear una función a partir de la imagen de contenedor.

Requisitos previos

Para completar los siguientes pasos, necesita un terminal de línea de comandos o shell para ejecutar comandos. Los comandos y la salida esperada se muestran en bloques separados:

aws --version

Debería ver los siguientes datos de salida:

aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64

Para los comandos largos, se utiliza un carácter de escape (\) para dividir un comando en varias líneas.

En Linux y macOS, use su administrador de shell y paquetes preferido. En Windows 10, puede instalar Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows.

Este ejercicio utiliza comandos de la CLI de Docker para crear la imagen de contenedor. Para instalar la CLI de Docker, consulte Obtener Docker en el sitio web Docs Docker.

Creación de la imagen de contenedor

AWS proporciona un conjunto de imágenes base en Amazon EC2 Container Registry (Amazon ECR). En este ejercicio de introducción, utilizamos la imagen base Node.js para crear una imagen de contenedor. Para obtener más información sobre las imágenes base, consulte Imágenes base de AWS para Lambda.

En los siguientes comandos, reemplace 123456789012 con su ID de cuenta AWS.

Para crear una imagen con la imagen base Node.js 12 AWS

  1. En su máquina local, cree un directorio de proyecto para su nueva función.

  2. Cree un archivo denominado app.js en el directorio del proyecto. Agregue el siguiente código a app.js:

    exports.handler = async (event) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
  3. Utilice un editor de texto para crear un nuevo archivo denominado Dockerfile en el directorio del proyecto. Agregue el siguiente contenido a Dockerfile:

    FROM public.ecr.aws/lambda/nodejs:12 # Copy function code and package.json COPY app.js package.json /var/task/ # Install NPM dependencies for function RUN npm install # Set the CMD to your handler CMD [ "app.handler" ]
  4. Cree el archivo package.json. En el directorio del proyecto, ejecute el comando npm init. Acepte todos los valores predeterminados:

    npm init
  5. Cree la imagen de Docker. En el directorio del proyecto, ejecute el siguiente comando:

    docker build -t hello-world .
  6. (Opcional) imágenes AWS base incluyen el emulador de interfaz de tiempo de ejecución Lambda, por lo que puede probar la función localmente.

    1. Ejecute su imagen Docker. En el directorio del proyecto, ejecute el comando docker run:

      docker run -p 9000:8080 hello-world:latest
    2. Comprobación de la función de Lambda. En una nueva ventana de terminal, ejecute un comando curl para invocar su función:

      curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

Cargue la imagen en el repositorioAmazon ECR

  1. Autentique la CLI de Docker en el registro Amazon ECR.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
  2. Cree un repositorio en Amazon ECR, con el comando create-repository.

    aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
  3. Etiquete la imagen para que coincida con el nombre del repositorio utilizando el comando docker tag.

    docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  4. Implemente la imagen Amazon ECR con el comando docker push.

    docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

Actualización de los permisos de usuario

Asegúrese de que los permisos para el usuario o rol de IAM que crea la función contengan las políticas administradas de AWS GetRepositoryPolicy, SetRepositoryPolicy y InitiateLayerUpload. Para obtener información sobre las políticas de acceso, consulte Administración de accesos en la Guía del usuario de IAM

Por ejemplo, utilice la consolaIAM para crear un rol con la siguiente política:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": ["ecr:SetRepositoryPolicy","ecr:GetRepositoryPolicy", "ecr:InitiateLayerUpload], "Resource": "arn:aws:ecr:<region>:<account>:repository/<repo name>/" } ] }

Cree una función Lambda definida como una imagen de contenedor

Utilice la consola Lambda para crear una función definida como una imagen de contenedor.

Para crear la función con la consola

  1. Abra la Página de funciones en la consola de Lambda.

  2. Elija Create function (Crear función).

  3. Elija la opción Container image (Imagen de contenedor).

  4. En Basic information (Información básica), haga lo siguiente:

    1. En Function name (Nombre de la función), escriba my-function.

    2. En Container image URI (URI de imagen de contenedor), introduzca el URI de la imagen Amazon ECR que creó anteriormente.

  5. Elija Create function (Crear función).

Lambda crea la función y un rol de ejecución que otorga permiso a la función para cargar registros. Lambda asume el rol de ejecución cuando se invoca la función y utiliza el rol de ejecución para crear credenciales para el SDK de AWS y leer datos de orígenes de eventos.

Invocación de la función Lambda

Invoque la función de Lambda utilizando los datos del evento de muestra que se proporcionan en la consola.

Para invocar una función

  1. Después de seleccionar la función, elija la pestaña Prueba.

  2. En la sección Evento de prueba, elija Nuevo evento. En Plantilla, deje la opción predeterminada hello-world. Escriba un nombre para esta prueba y anote la siguiente plantilla de evento de muestra:

    { "key1": "value1", "key2": "value2", "key3": "value3" }
  3. Elija Save changes (Guardar cambios) y, a continuación, seleccione Test (Probar). Cada usuario puede crear hasta 10 eventos de prueba por función. Dichos eventos de prueba no están disponibles para otros usuarios.

    Lambda ejecuta la función en su nombre. El controlador de funciones recibe y procesa el evento de muestra.

  4. Si se realiza correctamente, puede ver los resultados en la consola.

    • El resultado de ejecución muestra el estado de ejecución correctamente. Para ver los resultados de ejecución de la función, expanda Detalles. Tenga en cuenta que el vínculo Registros abre la página Grupos de registros en la consola CloudWatch.

    • La sección Summary (Resumen) muestra la información principal proporcionada en la sección Log output (Resultado del registro) (la línea REPORT del registro de ejecución).

    • La sección de salida del registro muestra el registro que Lambda genera para cada invocación. La función escribe estos registros en CloudWatch. La consola de Lambda muestra estos registros para su comodidad. Elija Haga clic aquí para agregar registros al grupo de CloudWatch registros y abrir la página Grupos de registro en la consola CloudWatch.

  5. Ejecute la función (elija Test [Probar]) unas cuantas veces más para recopilar algunas métricas que podrá ver en el siguiente paso.

  6. Elija la pestaña Monitor (Monitoreo). Esta página muestra gráficos de las métricas que Lambda envía a CloudWatch.

    Para obtener más información acerca de estos gráficos, consulte Monitorización de funciones en la consola de AWS Lambda.

Eliminar recursos

Si ha terminado con la imagen de contenedor, consulte Eliminación de una imagen en la sección Guía del usuario de Amazon EC2 Container Registry

Si ha terminado de trabajar con la función, elimínela. También puede eliminar el rol de ejecución que creó la consola y el grupo de registro que almacena los registros de la función.

Para eliminar una función Lambda

  1. Abra la Página de funciones en la consola de Lambda.

  2. Elija una función.

  3. Elija Actions (Acciones), Delete (Eliminar).

  4. En el cuadro de diálogo Delete function (Eliminar función), elija Delete (Eliminar).

Para eliminar el grupo de registros

  1. Abra la página Log groups (grupos de registros) de la consola CloudWatch.

  2. Seleccione el grupo de registros de la función (/aws/lambda/my-function).

  3. Elija Actions (Acciones), Delete log groups (Eliminar grupo(s) de registro(s).

  4. En el cuadro de diálogo Delete log group(s) (Eliminar grupo(s) de registro(s), elija Delete (Eliminar).

Para eliminar el rol de ejecución

  1. Abra la página Roles de la consola de IAM.

  2. Seleccione el rol de la función (my-function-role-31exxmpl).

  3. Elija Delete role (Eliminar rol).

  4. En el cuadro de diálogo Delete role (Eliminar rol), elija Yes, delete (Sí, eliminar).

Puede automatizar la creación y limpieza de funciones, grupos de registros y roles con AWS CloudFormation y la AWS CLI. Para obtener información sobre aplicaciones de ejemplo totalmente funcionales, consulte Aplicaciones de muestra de Lambda.