Biblioteca AWS Lambda JSON-RPC para Server e Cliente em TypeScript
Esta biblioteca oferece um framework simples e leve para construir um servidor e cliente utilizando funções AWS Lambda no padrão JSON-RPC (Remote Procedure Call). Com esta biblioteca, você pode facilmente criar aplicações serverless que utilizam AWS Lambda para lidar com chamadas de procedimentos remotos.
import { Handler } from 'aws-lambda'
import { RPCHandler } from '@stone-ton/lambda-json-rpc'
type Methods = {
test(params: { message: string }): string
}
type MethodTest = (
params: Parameters<Methods['test']>[0],
serverParams: JSONRPCMetadata
) => ReturnType<Methods['test']>
const method: MethodTest = (message) => {
return 'Olá ' + message
}
const rpc = new RPCHandler<Methods>()
rpc.addMethod('test', method)
export const handler: Handler = async (event, context) => {
return rpc.handler(event, context)
}
import { RPCCLient } from 'aws-lambda'
import { LambdaClient } from '@aws-sdk/client-lambda'
type Methods = {
test(params: { message: string }): string
}
const lambdaClient = new LambdaClient({})
const client = new RPCCLient<Methods>(lambdaClient)
const result = await client.request(
'test',
{ message: 'foo' },
{
function_name: 'lambda-test',
metadata: {
request_id: '12',
service: 'ton/monorepo',
author: {
id: '1234',
},
},
},
)
Antes de começar a usar a biblioteca, certifique-se de definir as variáveis de ambiente necessárias:
-
OTLP
: Deve ser definido comotrue
para habilitar o rastreamento com OpenTelemetry. -
OTLP_TIMEOUT
: Define o limite máximo de espera em milissegundos para o envio do trace pela lambda, com o valor padrão de 200ms caso não seja definido. -
OTLP_TRACE_URL
: Deve ser definido com a URL do servidor OpenTelemetry Collector, por exemplo,localhost:4318
. -
OTLP_LAMBDA_DEBUG
: Quando definido como true, acrescenta detalhes de requisição e resposta da lambda json rpc. Atenção à possível presença de dados sensíveis.