Ejecución y depuración de funciones de Lambda directamente desde el código - Kit de herramientas de AWS para VS Code

Ejecución y depuración de funciones de Lambda directamente desde el código

Al probar la aplicación de AWS SAM, puede optar por ejecutar y depurar solo la función de Lambda y excluir otros recursos definidos por la plantilla de AWS SAM. Este enfoque implica el uso de de la característica CodeLens para identificar los controladores de funciones de Lambda en el código fuente que se pueden invocar directamente.

Los controladores de Lambda que detecta CodeLens dependen del lenguaje y el tiempo de ejecución que esté utilizando para su aplicación.

Lenguaje/tiempo de ejecución Criterios para identificar las funciones de Lambda mediante los indicadores de CodeLens

C# (dotnetcore2.1, 3.1; .NET 5.0)

La función tiene las siguientes características:
  • Es una función pública de clase pública.

  • Tiene uno o dos parámetros. Con dos parámetros, el segundo parámetro debe implementar la interfaz ILambdaContext.

  • Tiene un archivo *.csproj en su carpeta principal en la carpeta del área de trabajo de VS Code.

La extensión ms-dotnettools.csharp (o cualquier extensión que proporcione símbolos de lenguaje para C#) está instalada y habilitada.

JavaScript/TypeScript (Node.js 12.x, 14.x)

La función tiene las siguientes características:
  • Es una función exportada con hasta tres parámetros.

  • Tiene un archivo package.json en su carpeta principal en la carpeta del área de trabajo de VS Code.

Python (3.7, 3.8, 3.9, 3.10, 3.11)

La función tiene las siguientes características:
  • Es una función de alto nivel.

  • Tiene un archivo requirements.txt en su carpeta principal en la carpeta del área de trabajo de VS Code.

La extensión ms-python.python (o cualquier extensión que proporcione símbolos de lenguaje para Python) está instalada y habilitada.

Java (8, 8.al2, 11)

La función tiene las siguientes características:
  • Es una función pública de clase pública no abstracta.

  • Tiene uno, dos o tres parámetros:

    • Un parámetro: el parámetro puede ser cualquier cosa.

    • Dos parámetros: los parámetros deben ser java.io.InputStream y java.io.OutputStream O el último parámetro debe ser com.amazonaws.services.lambda.runtime.Context.

    • Dos parámetros: los parámetros deben ser java.io.InputStream y java.io.OutputStream Y el último parámetro debe ser com.amazonaws.services.lambda.runtime.Context.

  • Tiene un archivo build.gradle (Gradle) o pom.xml (Maven) en su carpeta principal dentro de la carpeta del área de trabajo de VS Code.

La extensión redhat.java (o cualquier extensión que proporcione símbolos de lenguaje para Java) está instalada y habilitada. Esta extensión requiere Java 11, independientemente del motor de ejecución de Java que utilice.

La extensión vscjava.vscode-java-debug (o cualquier extensión que proporcione un depurador de Java) está instalada y habilitada.

Go (1.x)

La función tiene las siguientes características:
  • Es una función de alto nivel.

  • Se necesitan entre 0 y 2 argumentos. Si hay dos argumentos, el primero debe implementar context.Context.

  • Devuelve entre 0 y 2 argumentos. Si hay más de 0 argumentos, el último debe implementar error.

  • Tiene un archivo go.mod dentro de la carpeta del área de trabajo de VS Code.

La extensión golang.go está instalada, configurada y habilitada.

Para ejecutar y depurar una aplicación sin servidor directamente desde el código de la aplicación

  1. Para ver los archivos de su aplicación en el explorador de archivos de VS Code, seleccione Ver, Explorador.

  2. Desde la carpeta de la aplicación (por ejemplo, my-sample-app), expanda la carpeta de la función (en este caso, hello-world) y abra el archivo app.js.

  3. En el indicador de CodeLens que identifica un controlador de función de de Lambda válido, elija Add Debug Configuration.

    
                    Acceda a la opción Agregar configuración de depuración en el indicador de CodeLens para un controlador de funciones de Lambda.
  4. En la paleta de comandos, seleccione el tiempo de ejecución durante el cual se ejecutará la aplicación de AWS SAM.

  5. En el editor del archivo launch.json, edite o confirme los valores de las siguientes propiedades de configuración:

    • "name": ingrese un nombre fácil de leer para que aparezca en el campo desplegable Configuration (Configuración) de la vista Run (Ejecución).

    • "target": asegúrese de que el valor es "code" para que un controlador de funciones de Lambda se invoque directamente.

    • "lambdaHandler": ingrese el nombre del método en el código al que Lambda llama para ejecutar su función. Por ejemplo, para aplicaciones en JavaScript, el valor predeterminado es app.lambdaHandler.

    • "projectRoot": ingrese la ruta al archivo de aplicación que contiene la función de Lambda.

    • "runtime": ingrese o confirme un tiempo de ejecución válido para el entorno de ejecución de Lambda; por ejemplo, "nodejs.12x".

    • "payload". Elija una de las siguientes opciones para definir la carga del evento que desea proporcionar a la función de Lambda como entrada:

      • "json": pares clave-valor con formato JSON que definen la carga del evento.

      • "path": ruta al archivo que se utiliza como carga del evento.

      En el siguiente ejemplo, la opción "json" define la carga útil.

    
                    Configuración del archivo launch.json para invocar directamente las funciones de Lambda.

    Para obtener más información sobre estas y otras entradas del archivo launch.json, consulte Opciones de configuración para depurar aplicaciones sin servidor.

  6. Si está satisfecho con la configuración de depuración, elija la flecha de reproducción verde junto a EJECUTAR para iniciar la depuración.

    Cuando se inician las sesiones de depuración, el panel CONSOLA DE DEPURACIÓN muestra la salida de la depuración y los valores que devuelve la función de Lambda. (Al depurar aplicaciones de AWS SAM, el kit de herramientas de AWS se selecciona como el canal de Salida en el panel Salida).