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 en AWS SAM
Para crear las funciones AWS Lambda de Node.js, puedes utilizar la CLI de AWS SAM con el paquete JavaScript esbuild. El paquete esbuild admite las funciones de Lambda que se escriben en TypeScript.
Para crear una función de Lambda de Node.js con esbuild, añade un objeto de Metadata
a tu recurso de AWS:Serverless::Function
y especifica esbuild
para el BuildMethod
. Al ejecutar el comando sam build, AWS SAM usa esbuild para agrupar el código de la función de Lambda.
Propiedades de los metadatos
El objeto Metadata
admite las siguientes propiedades.
BuildMethod
Especifica el paquete de URL para tu 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 administrador de funciones de Lambda para el punto de entrada.
- EntryPoints
-
Especifica puntos de entrada para tu aplicación.
- Externo
-
Especifica la lista de paquetes a omitir de la compilación. Para más información, consulta Externo
en el sitio web de esbuild. - Formato
-
Especifica el formato de output de los archivos JavaScript generados en tu aplicación. Para más información, consulta 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 debesn intentar importar al resolver un paquete. El valor predeterminado esmain,module
. - Minify
-
Especifica si se debes minimizar el código de output agrupado. El valor predeterminado es
true
. - OutExtension
-
Personalice la extensión de los archivos que genera esbuild. Para más información, consulta 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 entrue
.En caso de conflicto,
Sourcemap: false
tiene prioridad sobreNODE_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, tu rol de ejecución de la función debe tener permiso para realizar la acción de
kms:Encrypt
. - SourcesContent
-
Especifica si se debes 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, consulta Contenido de las fuentes
en el sitio web de esbuild. -
- Destinatario
-
Especifica la versión de destino para ECMAScript. El valor predeterminado es
es2020
.
Ejemplo de función de Lambda de TypeScript
El siguiente fragmento de la plantilla de AWS SAM de ejemplo usa esbuild para crear una función de Lambda de Node.js a partir del código TypeScript en 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>
"