Criar funções do Lambda em Node.js com esbuild - 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á.

Criar funções do Lambda em Node.js com esbuild

Para criar e empacotar AWS Lambda 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. Ao executar o sam build comando, AWS SAM usa o esbuild para agrupar o código da função Lambda.

Propriedades de metadados

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

BuildMethod

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

BuildProperties

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

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

Destino

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

TypeScript Exemplo de função Lambda

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>"