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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

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

Los controladores Lambda que detecta CodeLens dependen del lenguaje y del tiempo de ejecución que utilice para la aplicación.

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

C# (dotnetcore2.1, 3.1;. NET5.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, 3,12)

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.

    • Tres parámetros: los parámetros deben ser a java.io.InputStream y java.io.OutputStream AND el último parámetro debe ser un. 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 tiempo de ejecución de Java que utilice.

El vscjava. vscode-java-debugLa extensión (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 aplicaciones (por ejemplo, my-sample-app), expanda la carpeta de funciones (en este caso, hello-world) y abra el archivo. app.js

  3. En el CodeLens indicador que identifica un controlador de funciones Lambda apto, elija. Add Debug Configuration

    Acceda a la opción Añadir configuración de depuración en el CodeLens indicador de un controlador de funciones 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 las 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 JSON clave-valor con formato: que definen la carga útil 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, para iniciar la depuración, seleccione la flecha verde de reproducción situada junto a. RUN

    Cuando se inician las sesiones de depuración, el DEBUGCONSOLEpanel muestra el resultado de la depuración y muestra todos los valores que devuelva la función Lambda. (Al depurar AWS SAM aplicaciones, se selecciona AWS Toolkit como canal de salida en el panel de salida).