Opciones de configuración para depurar aplicaciones sin servidor - 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.

Opciones de configuración para depurar aplicaciones sin servidor

Al abrir el archivo launch.json para editar las configuraciones de depuración, puede usar la característica IntelliSense de VS Code para ver y completar automáticamente las propiedades válidas. Para activar IntelliSense en el editor, presione Ctrl+barra espaciadora.

Uso de IntelliSense de VS Code para buscar y completar propiedades de depuración válidas.

Con IntelliSense puede encontrar y definir las propiedades para invocar funciones de Lambda directamente o con la plantilla de AWS SAM. También puede definir las propiedades de "lambda" (cómo se ejecuta la función), "sam" (cómo compila la aplicación AWS SAM CLI) y "aws" (cómo se proporciona la información de conexión de AWS).

AWS SAM: invocación directa del controlador de Lambda/invocación de Lambda basada en plantilla
Propiedad Descripción

type

Especifica qué extensión administra la configuración de lanzamiento. Siempre se establece en aws-sam para usar AWS SAMCLI para realizar la compilación y depuración localmente.

name

Especifica un nombre fácil de leer que aparecerá en la lista Debug launch configuration (Depurar configuración de lanzamiento).

request

Especifica el tipo de configuración que debe realizar la extensión designada (aws-sam). Siempre se establece en direct-invoke para lanzar la función de Lambda.

invokeTarget

Especifica el punto de entrada para la invocación del recurso.

Para invocar directamente la función de Lambda, establezca los valores de los campos invokeTarget siguientes:

  • target: se establece en code.

  • lambdaHandler: nombre del controlador de funciones de Lambda que se va a invocar.

  • projectRoot: ruta del archivo de aplicación que contiene el controlador de la función de Lambda.

  • architecture: arquitectura de procesador del entorno emulado en el que se ejecuta la aplicación de Lambda local para SAM. Para determinados tiempos de ejecución, puede elegir arm64 en lugar de la arquitectura x86_64 predeterminada. Para obtener más información, consulte Crear una nueva aplicación sin servidor (local).

Para invocar los recursos de Lambda con la plantilla de AWS SAM, establezca los valores de los campos invokeTarget siguientes:

  • target: se establece en template.

  • templatePath: ruta al archivo de plantilla de AWS SAM.

  • logicalId: nombre del recurso de AWS::Lambda::Function o AWS::Serverless::Function que se va a invocar. Puede encontrar el nombre del recurso en la plantilla deAWS SAM con formato YAML. Tenga en cuenta que el AWS Toolkit reconoce implícitamente las funciones definidas con PackageType: Image en la plantilla de AWS SAM como funciones de Lambda basadas en imágenes. Para obtener más información, consulte Paquetes de implementación de Lambda en la Guía para desarrolladores de AWS Lambda.

Propiedades de Lambda ("lambda")
Propiedad Descripción

environmentVariables

Pasa parámetros operativos a la función de Lambda. Por ejemplo, si está escribiendo en un bucket de Amazon S3, en lugar de codificar de forma rígida el nombre del bucket, configúrelo como una variable de entorno.

nota

Al especificar variables de entorno para una aplicación sin servidor, debe añadir configuraciones tanto a la plantilla de AWS SAM (template.yaml) como al archivo launch.json.

Ejemplo de formato para una variable de entorno en la plantilla de AWS SAM:

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.lambdaHandlerN10 Runtime: nodejs10.x Environment: Variables: SAMPLE1: Default Sample 1 Value

Ejemplo de formato para una variable de entorno en el archivo launch.json:

"environmentVariables": { "SAMPLE1": "My sample 1 value" }

payload

Proporciona dos opciones para la carga del evento que proporciona 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.

memoryMB

Especifica los megabytes (MB) de memoria proporcionados para ejecutar una función de Lambda invocada.

runtime

Especifica el tiempo de ejecución que usa la función de Lambda. Para obtener más información, consulte Tiempos de ejecución de AWS Lambda.

timeoutSec

Establece el tiempo permitido, en segundos, antes de que se agote la sesión de depuración.

pathMappings

Especifica dónde se encuentra el código local en relación con el lugar en el que se ejecuta en el contenedor.

De forma predeterminada, el kit de herramientas para VS Code establece localRoot en la raíz del código de la función de Lambda en el espacio de trabajo local y remoteRoot en /var/task, que es el directorio de trabajo predeterminado para ejecutar el código en Lambda. Si el directorio de trabajo se cambia en el Dockerfile o con el parámetro WorkingDirectory en el archivo de plantilla de AWS CloudFormation, se debe especificar al menos una entrada de pathMapping para que el depurador pueda asignar correctamente los puntos de interrupción establecidos localmente al código que se ejecuta en el contenedor Lambda.

Ejemplo de formato para pathMappings en el archivo launch.json:

"pathMappings": [ { "localRoot": "${workspaceFolder}/sam-app/HelloWorldFunction", "remoteRoot": "/var/task" } ]

Advertencias:

  • Con las funciones de Lambda basadas en imágenes .NET, la entrada remoteRoot debe ser el directorio de compilación.

  • Con las funciones de Lambda basadas en Node.js, puede especificar solo una entrada de asignación de rutas.

El kit de herramientas para VS Code utiliza la CLI de AWS SAM para compilar y depurar aplicaciones sin servidor localmente. Puede configurar el comportamiento de los comandos de AWS SAM CLI que utilizan las propiedades de la configuración de "sam" en el archivo launch.json.

Propiedades de AWS SAM CLI ("sam")
Propiedad Descripción Valor predeterminado

buildArguments

Configura el modo en que el comando sam build compila el código fuente de Lambda. Para ver las opciones de compilación, consulte la compilación de sam en la Guía para desarrolladores de AWS Serverless Application Model.

Cadena vacía

containerBuild

Indica si se debe compilar la función en un contenedor de Docker tipo Lambda.

false

dockerNetwork

Especifica el nombre o el ID de una red de Docker existente a la que deben conectarse los contenedores de Lambda y Docker, junto con la red en modo puente predeterminada. Si no se especifica, los contenedores de Lambda se conectan únicamente a la red Docker en modo puente predeterminada.

Cadena vacía

localArguments

Especifica argumentos adicionales de invocación local.

Cadena vacía

skipNewImageCheck

Especifica si el comando debe omitir la extracción de la última imagen de Docker para el tiempo de ejecución de Lambda.

false

template

Personaliza la plantilla de AWS SAM mediante parámetros para ingresar valores de cliente. Para obtener más información, consulte Parámetros en la Guía del usuario de AWS CloudFormation.

"parameters":{}

Propiedades de conexión de AWS ("aws")
Propiedad Descripción Valor predeterminado

credentials

Selecciona un perfil específico (por ejemplo, profile:default) de su archivo de credenciales para obtener las credenciales de AWS.

Las credenciales de AWS que su archivo de configuración de AWS compartido o el archivo de credenciales de AWS compartido existentes proporcionan al kit de herramientas de VS Code.

region

Establece la región de AWS del servicio (por ejemplo, us-east-1).

Región de AWS predeterminada asociada al perfil de credenciales activo.

Ejemplo: Configuración de lanzamiento de una plantilla

A continuación, se muestra un ejemplo de archivo de configuración de lanzamiento para un destino de plantilla de AWS SAM:

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:HelloWorldFunction", "invokeTarget": { "target": "template", "templatePath": "template.yaml", "logicalId": "HelloWorldFunction" }, "lambda": { "payload": {}, "environmentVariables": {} } } ] }

Ejemplo: Configuración de lanzamiento de un código

A continuación, se muestra un ejemplo de archivo de configuración de lanzamiento para un destino de función de Lambda:

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:app.lambda_handler (python3.7)", "invokeTarget": { "target": "code", "projectRoot": "hello_world", "lambdaHandler": "app.lambda_handler" }, "lambda": { "runtime": "python3.7", "payload": {}, "environmentVariables": {} } } ] }