@moblybr/middy-defaults
v1.3.3
Published
Esse é um "wrapper" que ajuda na configuração de middlewares padrões que a lambda usará.
Downloads
155
Keywords
Readme
Pacote middyDefaults
Esse é um wrapper que ajudará na configuração de packages padrões que a lambda usará.
Instalação
Para Instalar:
npm i @moblybr/middy-defaults
Uso
Para utilizar o middyDefaults em sua configuração padrão basta importar o pacote.
import { middyDefaults } from '@moblybr/middy-defaults' //es6
//ou
const { middyDefaults } = require('@moblybr/middy-defaults') //commonJs
Desta forma ele ira montar um middy
ja abstraido com alguns middlewares, são eles.
erroHandler
obfuscaterMiddleware
doNotWaitForEmptyEventLoop
Por padrão o middlewar errorHandler
ja vem pre configurado com um Log.error do erro e epsagon.setError(err)
em casos de erro 500 e não esteja rodando offline, como é o caso no serverless offline, e com a variavel de ambiente NODE.ENV com valor diferente de 'test'.
Para mais informções de configurações personalizadas sobre errorHandler
ou sobre obfuscaterMiddleware
acesse a documentação dos mesmos abaixo.
Sera mostrado como realizar configurações personalizadas um pouco mais adiante.
Lambdas http
Para lamdas http existe o httpMiddyDefaults
, um middy com alguns middlewares ja configurados para funções http
Uso
import { httpMiddyDefaults } from '@moblybr/middy-defaults' //es6
//ou
const { httpMiddyDefaults } = require('@moblybr/middy-defaults') //commonJs
const handler = httpMiddyDefaults(async (event, context) => {
//
})
O httpMiddyDefaults montará um middy ja com os seguintes middlewares.
errorHandler
obfuscaterMiddleware
doNotWaitForEmptyEventLoop
warmup
cors
httpEventNormalizer
httpJsonBodyParser
Para mais informções de funcionalidades e configurações sobre estes mesmos middlewares consulte a documentação abaixo.
Configurações
Alguns dos middlewares abstraidos em nosso middyDefaults
e httpMiddyDefaults
aceitam configurações, e para configuralos basta passar um objeto de configurações como segundo paramentro da função.
Uso
import { middyDefaults } from '@moblybr/middy-defaults' //es6
//ou
const { middyDefaults } = require('@moblybr/middy-defaults') //commonJs
const config = {
errorHandler: { customLogger }, // configuração errorHandler opcional, padrão console.error e setError no epsagon
captureCorrelationIds: {
sampleDebugLogRate: 0.01
}, // configuração captureCorrelationIds opcional, padrão 1%
sampleLogging: {
sampleRate: 0.01
}, // configuração sampleLogging opcional, padrão 1% de log
obfuscatedLogging: {}, // configuração obfuscatedLogging requirida do contrario não obfucara nenhum dado
doNotWaitForEmptyEventLoop: {}, // configuração doNotWaitForEmptyEventLoop opcional
warmup: {}, // configuração warmup opcional
cors: {} // configuração do cors opcional
middlewareOrder: [] // configuração opcional para inserir middleware em posição customizada
}
const handler = middyDefaults(async (event, context) => {
//
}, config)
permite sobescrever via variavel de ambiente o default de 1% de sample rate via a variavel SAMPLE_DEBUG_LOG_RATE, para habilitar logs de debug de 5% é só colocar o valor da variável para 0.05
O sample logging é vinculado a variável LOG_LEVEL que pode ser DEBUG, WARN e ERROR, o padrão é DEBUG então se não colocar a variável sempre irá logar tudo
middlewareOrder é um array de objetos com 3 atributos:
- position: posição numérica na ordem de middlewares
- fn: função do middleware a ser executada
- params: parametros do middleware a ser executado Exemplo: { position: 0, fn: warmup, params: config.warmup } ATENÇÃO: a ordem de middlewares é uma configuração avançada e pode afetar o comportamento do serviço
Importante
Para que sample logger funcione é necessario que seja declarada uma variável de ambiente [LOG_LEVEL = WARN]
para que ele logue corretamente, do contrário ele sempre logara por padrão com Log.debug()
É recomendado que para produção as configurações de sampleLogging e obfuscator sejam passadas corretamente. Configurações do obfuscator na seguinte url: https://github.com/getndazn/dazn-lambda-powertools/tree/master/packages/lambda-powertools-middleware-obfuscater