Criação de funções do Lambda em Node.js com esbuild no AWS SAM - AWS Serverless Application Model

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á.

Criação de funções do Lambda em Node.js com esbuild no AWS SAM

Para criar e empacotar as funções AWS Lambda do Node.js, você pode usar AWS SAM CLI com o bundler JavaScript esbuild. O bundler esbuild oferece suporte às funções do Lambda que você escreve em 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 comando sam build, AWS SAM usa o esbuild para agrupar o código da função do Lambda.

Propriedades de metadados

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

Método de construção

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

Construir propriedades

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 do 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 no site da esbuild.

Formato

Especifica o formato de saída dos arquivos JavaScript gerados em seu aplicativo. Para obter mais informações, consulte Formato no site do esbuild.

Carregador

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

Campos principais

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.

Extensão de saída

Personalize a extensão dos arquivos que o esbuild gera. Para obter mais informações, consulte Extensão de saída 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.

nota

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.

Conteúdo das fontes

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 no site esbuild.

Alvo

Especifica a versão de destino do ECMAScript. O valor padrão é es2020.

Exemplo de função TypeScript do Lambda

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