Creación de funciones de Lambda Node.js con esbuild - AWS Serverless Application Model

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.

Creación de funciones de Lambda Node.js con esbuild

Para compilar y empaquetar AWS Lambda las funciones de Node.js, puede utilizarlas AWS SAMCLI con el paquete JavaScript esbuild. El paquete esbuild admite las funciones Lambda que usted escriba. TypeScript

Para crear una función de Lambda de Node.js con esbuild, añada un objeto de Metadata a su recurso de AWS:Serverless::Function y especifique esbuild para el BuildMethod. Al ejecutar el sam build comando, AWS SAM usa esbuild para empaquetar el código de la función Lambda.

Propiedades de los metadatos

El objeto de Metadata admite las siguientes propiedades.

BuildMethod

Especifica el paquete de URL para su aplicación. El único valor admitido es esbuild.

BuildProperties

Especifica las propiedades de creación del código de la función de Lambda.

El objeto de BuildProperties admite las siguientes propiedades. Todas las propiedades son opcionales. De forma predeterminada, AWS SAM utiliza el controlador de funciones Lambda como punto de entrada.

EntryPoints

Especifica puntos de entrada para su aplicación.

Externo

Especifica la lista de paquetes a omitir de la compilación. Para más información, consulte Externo en el sitio web de esbuild.

Formato

Especifica el formato de salida de los JavaScript archivos generados en la aplicación. Para más información, consulte Formato en el sitio web de esbuild.

Programa de carga

Especifica la lista de configuraciones para cargar datos para un tipo de archivo determinado.

MainFields

Especifica qué campos de package.json se deben intentar importar al resolver un paquete. El valor predeterminado es main,module.

Minify

Especifica si se debe minimizar el código de salida agrupado. El valor predeterminado es true.

OutExtension

Personalice la extensión de los archivos que genera esbuild. Para más información, consulte Out extension en el sitio web de esbuild.

Sourcemap

Especifica si el paquete produce un archivo de mapa de origen. El valor predeterminado es false.

Cuando se establece en true, NODE_OPTIONS: --enable-source-maps se añade a las variables de entorno de la función de Lambda y se genera un mapa de origen que se incluye en la función.

Como alternativa, cuando NODE_OPTIONS: --enable-source-maps se incluye en las variables de entorno de la función, Sourcemap se establece automáticamente en true.

En caso de conflicto, Sourcemap: false tiene prioridad sobre NODE_OPTIONS: --enable-source-maps.

nota

De forma predeterminada, Lambda cifra todas las variables de entorno en reposo con AWS Key Management Service (AWS KMS). Al utilizar mapas de origen, para que la implementación se realice correctamente, el rol de ejecución de la función debe tener permiso para realizar la acción de kms:Encrypt.

SourcesContent

Especifica si se debe incluir el código fuente en el archivo de mapa fuente. Configure esta propiedad cuando Sourcemap esté establecido en 'true'.

  • Especifique SourcesContent: 'true' para incluir todo el código fuente.

  • Especifique SourcesContent: 'false' para excluir todo el código fuente. Esto se traduce en tamaños más pequeños de los archivos de los mapas fuente, lo que resulta útil en la producción al reducir los tiempos de puesta en marcha. Sin embargo, el código fuente no estará disponible en el depurador.

El valor predeterminado es SourcesContent: true.

Para más información, consulte Contenido de las fuentes en el sitio web de esbuild.

Destinatario

Especifica la versión de destino para ECMAScript. El valor predeterminado es es2020.

TypeScript Ejemplo de función Lambda

El siguiente fragmento de AWS SAM plantilla de ejemplo usa esbuild para crear una función Lambda de Node.js a partir del código. TypeScript hello-world/app.ts

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs20.x Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Environment: Variables: NODE_OPTIONS: --enable-source-maps Metadata: BuildMethod: esbuild BuildProperties: Format: esm Minify: false OutExtension: - .js=.mjs Target: "es2020" Sourcemap: true EntryPoints: - app.ts External: - "<package-to-exclude>"