

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.

# Compilación de funciones Lambda de Node.js con esbuild en AWS SAM
<a name="serverless-sam-cli-using-build-typescript"></a>

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ñade un objeto de `Metadata` a tu recurso de `AWS:Serverless::Function` y especifica `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
<a name="serverless-sam-cli-using-build-typescript-metadata"></a>

El objeto `Metadata` admite las siguientes propiedades.

### BuildMethod
<a name="serverless-sam-cli-using-build-typescript-metadata-buildmethod"></a>

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

### BuildProperties
<a name="serverless-sam-cli-using-build-typescript-metadata-buildproperties"></a>

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 tu aplicación.

**Externo**  
Especifica la lista de paquetes a omitir de la compilación. Para más información, consulta [Externo](https://esbuild.github.io/api/#external) 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, consulta [Formato](https://esbuild.github.io/api/#format) 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 es `main,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](https://esbuild.github.io/api/#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`.  
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](https://esbuild.github.io/api/#sources-content) en el *sitio web de esbuild*.

**Destinatario**  
Especifica la ECMAScript versión de destino. El valor predeterminado es `es2020`.

## TypeScript Ejemplo de función Lambda
<a name="serverless-sam-cli-using-build-typescript-example"></a>

En el siguiente fragmento de AWS SAM plantilla de ejemplo, se utiliza esbuild para crear una función Lambda de Node.js a partir del código de. 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>"
```