

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Construindo funções Lambda do Node.js com esbuild em AWS SAM
<a name="serverless-sam-cli-using-build-typescript"></a>

Para criar e empacotar AWS Lambda as funções do Node.js, você pode usar o AWS SAMCLI com o JavaScript bundler esbuild. O bundler esbuild oferece suporte às funções Lambda nas quais você escreve. TypeScript

Para criar uma função do Lambda Node.js com esbuild, adicione um objeto `Metadata` ao seu recurso `AWS:Serverless::Function` e especifique `esbuild` para `BuildMethod`. Quando você executa o **sam build** comando, AWS SAM usa o esbuild para agrupar o código da função Lambda.

## Propriedades de metadados
<a name="serverless-sam-cli-using-build-typescript-metadata"></a>

O objeto `Metadata` é compatível com as seguintes propriedades para esbuild.

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

Especifica o empacotador do aplicativo. O único valor aceito é `esbuild`.

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

Especifica as propriedades de construção do código da função do Lambda.

O objeto `BuildProperties` é compatível com as seguintes propriedades para esbuild. Todas as propriedades são opcionais. Por padrão, AWS SAM usa seu manipulador de funções Lambda como ponto de entrada.

**EntryPoints**  
Especifica pontos de entrada para seu aplicativo.

**Externo**  
Especifica a lista de pacotes a serem omitidos da compilação. Para obter mais informações, consulte [Externo](https://esbuild.github.io/api/#external) no *site da esbuild*.

**Formato**  
Especifica o formato de saída dos JavaScript arquivos gerados em seu aplicativo. Para obter mais informações, consulte [Formato](https://esbuild.github.io/api/#format) no *site do esbuild*.

**Carregador**  
Especifica a lista de configurações para carregar dados de um determinado tipo de arquivo.

**MainFields**  
Especifica quais campos `package.json` tentar importar ao resolver um pacote. O valor padrão é `main,module`.

**Minimizar**  
Especifica se o código de saída incluído deve ser minimizado. O valor padrão é `true`.

**OutExtension**  
Personalize a extensão dos arquivos que o esbuild gera. Para obter mais informações, consulte [Extensão de saída](https://esbuild.github.io/api/#out-extension) no *site da esbuild*.

**Mapa de origem**  
Especifica se o bundler produz um arquivo de mapa de origem. O valor padrão é `false`.  
Quando definido como `true`, `NODE_OPTIONS: --enable-source-maps` é anexado às variáveis de ambiente da função do Lambda e um mapa de origem é gerado e incluído na função.  
Como alternativa, quando `NODE_OPTIONS: --enable-source-maps` é incluído nas variáveis de ambiente da função, `Sourcemap` é automaticamente definido como `true`.  
Quando conflitante, `Sourcemap: false` tem precedência sobre `NODE_OPTIONS: --enable-source-maps`.  
Por padrão, o Lambda criptografa todas as variáveis de ambiente em repouso com AWS Key Management Service (AWS KMS). Ao usar mapas de origem, para que a implantação seja bem-sucedida, a função de execução da sua função deve ter permissão para realizar a ação `kms:Encrypt`.

**SourcesContent**  
Especifica se o código-fonte deve ser incluído no arquivo do mapa de origem. Configure essa propriedade quando `Sourcemap` estiver definido como `'true'`.  
+ Especifique `SourcesContent: 'true'` para incluir todo o código-fonte.
+ Especifique `SourcesContent: 'false'` para excluir todo o código-fonte. Isso resulta em tamanhos menores de arquivos de mapas de origem, o que é útil na produção ao reduzir os tempos de inicialização. No entanto, o código-fonte não estará disponível no depurador.
O valor padrão é `SourcesContent: true`.  
Para obter mais informações, consulte [Conteúdo de fontes](https://esbuild.github.io/api/#sources-content) no *site esbuild*.

**Destino**  
Especifica a ECMAScript versão de destino. O valor padrão é `es2020`.

## TypeScript Exemplo de função Lambda
<a name="serverless-sam-cli-using-build-typescript-example"></a>

O exemplo de trecho AWS SAM de modelo a seguir usa esbuild para criar uma função Lambda Node.js a partir do código em. 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>"
```