Tutorial Cómo crear, cargar e invocar un AWS Lambda Función - AWS Toolkit for Eclipse

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Tutorial Cómo crear, cargar e invocar un AWS Lambda Función

Este tutorial le guía a través del proceso de un flujo de trabajo típico de AWS Lambda y le proporciona una experiencia de primera mano en el uso de Lambda con AWS Toolkit for Eclipse.

importante

El tutorial presupone que tiene una cuenta de AWS, que ya ha instalado el AWS Toolkit for Eclipse y que conoce las características y los conceptos básicos de Lambda. Si no está familiarizado con Lambda, puede obtener más información en la página de inicio de Lambda y en la Guía para desarrolladores de AWS Lambda.

Creación de un proyecto de AWS Lambda

Para iniciar un proyecto de Lambda, en primer lugar implemente el código como un método en una clase de controlador. AWS Toolkit for Eclipse proporciona un nuevo asistente de proyectos para ayudarle a crear una nueva clase de controlador. El proyecto de Lambda es un proyecto de Maven que utiliza un archivo POM.xml para administrar las dependencias del paquete. Puede utilizar la herramienta de línea de comandos Maven para la compilar, probar e implementar una aplicación. Para obtener más información sobre Maven, consulte la documentación del proyecto Maven.

Para crear un proyecto de AWS Lambda

  1. En la barra de herramientas de Eclipse, abra el menú de Amazon Web Services (identificado por el icono de la página de inicio de AWS) y, a continuación, elija New AWS Lambda Java project. O bien, en la barra de menús de Eclipse, elija File, New, AWS Lambda Java Project.

  2. Rellene los campos Project name, Group ID, Artifact ID y Class name con los valores necesarios. El ID de grupo y el ID de artefacto son los ID que identifican un artefacto de compilación de Maven. En este tutorial se utilizan los siguientes valores de ejemplo:

    • Project name (Nombre de proyecto) hellolambda

    • Group ID: com.example.lambda

    • Artifact ID: demo

    • Nombre de clase: Hola

    El campo Package Name contiene el espacio de nombres del paquete para la clase de controlador de AWS Lambda. El valor predeterminado de este campo es una concatenación del ID de grupo y el ID de artefacto, de acuerdo con las convenciones de los proyectos de Maven. Este campo se actualiza automáticamente cuando se actualizan los campos Group ID y Artifact ID.

  3. En Input Type, elija Custom. Para obtener más información acerca de cada uno de los tipos de entrada disponibles, consulte New AWS Lambda Java Project Dialog.

  4. Compruebe que las entradas tienen un aspecto parecido al de la siguiente captura de pantalla (modifíquelas si no es así) y, a continuación, elija Finish.

    
                  Valores de los campos Project name, Group ID, Artifact ID y Class Name en el cuadro de diálogo New AWS Lambda Maven Project

    A medida que se escribe, el código de Source preview cambia para reflejar los cambios realizados en el cuadro de diálogo.

  5. Cuando elija Finish (Finalizar), se generará el directorio y los archivos de código fuente del proyecto en el workspace de Eclipse. Se abre una nueva ventana del navegador web, que muestra README.html (que se creó para usted en el directorio raíz de proyecto). README.html proporciona instrucciones que le guiarán a través de los siguientes pasos de la implementación, las pruebas, la carga y la invocación de la nueva función de Lambda. Lea el documento para familiarizarse con los siguientes pasos que se describen aquí.

A continuación, implemente la función en el proyecto de Java HelloLambda que se acaba de crear en Eclipse.

Implementación del método del controlador

Puede utilizar el cuadro de diálogo Create New Project para crear la estructura de un proyecto. Ahora rellene el código que se ejecutará cuando se invoque la función de Lambda. (En este caso, a través de un evento personalizado que envía una cadena a la función, tal y como especificó al configurar el parámetro de entrada del método).

Para implementar el método de controlador de Lambda

  1. En Eclipse, en Project Explorer, abra Hello.java en el proyecto HelloLambda. Contendrá un código similar al siguiente.

    package com.example.lambda.demo; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class Hello implements RequestHandler<Object, String> { @Override public String handleRequest(Object input, Context context) { context.getLogger().log("Input: " + input); // TODO: implement your handler return "Hello from Lambda"; } }
  2. Reemplace el contenido de la función handleRequest con el siguiente código.

    @Override public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); String output = "Hello, " + input + "!"; return output; }

Permitir que Lambda asuma un rol de IAM

Para que Lambda pueda tener acceso a la función de Lambda, tiene que crear un rol de IAM que le conceda acceso a sus recursos de AWS. Puede crear el rol de dos maneras: a través de la Consola de administración de AWS o mediante AWS Toolkit for Eclipse. En esta sección se describe cómo crear el rol de IAM en la consola. Consulte Carga del código para crear uno utilizando AWS Toolkit for Eclipse.

Para crear un rol de IAM para Lambda

  1. Inicie sesión en la Consola de administración de AWS.

  2. En el menú Services, abra la consola de IAM.

  3. En el panel de navegación, elija Roles y, a continuación, Create role.

  4. En Select type of trusted entity, elija AWS service y, a continuación, elija Lambda para el servicio que utilizará este rol. A continuación, elija Next (Siguiente). Permissions (Permisos)

  5. En Attach permissions policy, elija AWSLambdaBasicExecutionRole. Esto permite que Lambda escriba en los recursos de registros de CloudWatch. A continuación, elija Next (Siguiente). Review (Revisar)

  6. Añada un nombre para el rol, por ejemplo, hello-lambda-role y una descripción. A continuación, elija Create role para finalizar la creación del rol de IAM.

Creación de un bucket de Amazon S3 para el código de Lambda

AWS Lambda requiere un bucket de Amazon S3 para almacenar su proyecto de Java cuando lo cargue. Puede utilizar un bucket que ya exista en la región de AWS en la que se va a ejecutar el código o puede crear uno nuevo específicamente para que Lambda lo utilice (opción recomendada).

Puede crear un bucket de Amazon S3 de dos maneras, a través de la Consola de administración de AWS o mediante AWS Toolkit for Eclipse. En esta sección se describe cómo crear un bucket de Amazon S3 en la consola. Consulte Carga del código para crear uno utilizando AWS Toolkit for Eclipse.

Para crear un bucket de Amazon S3 para su uso con Lambda

  1. Inicie sesión en la Consola de administración de AWS.

  2. En el menú Services, abra la consola de S3.

  3. Elija Create bucket (Crear bucket).

  4. Escriba un nombre y una región para el bucket. Esta región debe ser la misma en la que desea ejecutar la función de Lambda. Para obtener una lista de las regiones admitidas por Lambda, consulte Regiones y puntos de enlace en la Amazon Web Services General Reference.

  5. Elija Create para terminar de crear el bucket.

Carga del código

A continuación, debe cargar el código en AWS Lambda como preparación para invocarlo desde la Consola de administración de AWS.

Para cargar la función en Lambda

  1. Haga clic con el botón derecho en la ventana de código de Eclipse, elija AWS Lambda y, a continuación, elija Upload function to AWS Lambda.

  2. En la página Select Target Lambda Function, elija la región de AWS que desea utilizar. Debe ser la misma región que eligió para el bucket de Amazon S3.

    
                  Página Select Target Lambda Function
  3. Elija Create a new Lambda function y, a continuación, escriba un nombre para la función (por ejemplo, HelloFunction).

  4. Seleccione Next (Siguiente).

  5. En la página Function Configuration, introduzca una descripción para la función de Lambda de destino y, a continuación, elija el rol IAM y el bucket Amazon S3 que utilizará la función.

    
                  Página Function Configuration

    Para obtener más información sobre las opciones disponibles, consulte Cuadro de diálogo Upload AWS Lambda Function.

  6. En la página Function Configuration, elija Create en Function Role si desea crear un nuevo rol de IAM para la función de Lambda. Introduzca un nombre de rol en el cuadro de diálogo Create Role.

    
                  Creación de un nuevo rol de IAM en la página Function Configuration
  7. En la página Function Configuration, elija Publish new version si desea que la carga cree una versión nueva de la función de Lambda. Para obtener más información sobre el control de versiones y los alias en Lambda, consulte Control de versiones y alias de las funciones de AWS Lambda en la AWS Lambda Developer Guide.

  8. Si optó por publicar una versión nueva, la opción Provide an alias to this new version está habilitada. Elija esta opción si desea asociar un alias a esta versión de la función de Lambda.

  9. En la página Function Configuration, elija Create en la sección S3 Bucket for Function Code si desea crear un nuevo bucket de Amazon S3 para la función de Lambda. Introduzca un nombre para el bucket en el cuadro de diálogo Create Bucket.

    
                  Página Create bucket
  10. En la sección S3 Bucket for Function Code, también puede indicar que desea cifrar el código que se va a cargar. En este ejemplo, deje seleccionada la opción None. Para obtener más información sobre el cifrado de Amazon S3, consulte Protección de datos con el cifrado del lado del servidor en la Amazon S3 Developer Guide.

  11. Deje las opciones de la sección Advanced Settings como están. AWS Toolkit for Eclipse selecciona los valores predeterminados automáticamente. Elija Finish para cargar la función de Lambda en AWS.

Si la carga se realiza correctamente, verá el nombre de la función de Lambda que eligió, junto al nombre de la clase de controlador de Java en la vista Project Explorer.

Si esto no ocurre, abra la vista Error Log (Registro de errores) de Eclipse. Lambda utilizará este registro de errores para escribir información sobre los problemas al cargar o ejecutar la función y facilitar su depuración.

Invocación de la función de Lambda

Ahora puede invocar la función en AWS Lambda.

Para invocar una función de Lambda

  1. Haga clic con el botón derecho en la ventana de código de Eclipse, elija AWS Lambda y, a continuación, elija Run Function on AWS Lambda.

  2. Elija la clase de controlador que desea invocar.

  3. En el cuadro de entrada, escriba una cadena JSON válida, como "AWS Lambda".

    
                  Elección del controlador de Lambda que se va a invocar
    nota

    Puede añadir archivos de entrada JSON al proyecto; en este cuadro de diálogo, se mostrarán aquellos cuyo nombre termine por .json. Puede utilizar esta característica para proporcionar archivos de entrada estándar para las funciones de Lambda.

  4. La casilla Show Live Log está activada de forma predeterminada, por lo que se muestran los logs de la salida de la función de Lambda en la consola de Eclipse.

  5. Elija Invoke para enviar los datos de entrada a la función de Lambda. Si todo está configurado correctamente, el valor de retorno de la función debería aparecer en la vista Console (Consola) de Eclipse (que se abrirá automáticamente si aún no lo ha hecho).

Enhorabuena, acaba de ejecutar su primera función Lambda directamente desde el IDE de Eclipse.

Pasos siguientes

Ahora que ha cargado e implementado la función, pruebe a cambiar el código y a ejecutarla de nuevo. Lambda vuelve a cargarse automáticamente, invoca la función por usted y después muestra la salida en la consola de Eclipse.

Más información

Para obtener más información sobre cada una de las páginas que se han descrito en este tutorial, así como una descripción completa de cada opción, consulte la Referencia de la interfaz de AWS Lambda.

Para obtener más información sobre Lambda y sobre cómo escribir código Java para Lambda, consulte Creación de funciones de Lambda en Java en la AWS Lambda Developer Guide.