Use this guide when you need more than a single default handler. Aligned with upstream HANDLER_SCENARIOS. In this repo the Node runtime adapter is provided by @runfabric/sdk; use createHandler from @runfabric/sdk or its adapters subpath.
service: hello-api
provider:
name: aws-lambda
runtime: nodejs
functions:
- name: api
entry: src/index.ts
triggers:
- type: http
method: GET
path: /hello
import type { UniversalHandler } from "@runfabric/sdk";
export const handler: UniversalHandler = async (req) => ({
status: 200,
headers: { "content-type": "application/json" },
body: JSON.stringify({ method: req.method, path: req.path }),
});
service: multi-api
provider:
name: aws-lambda
runtime: nodejs
functions:
- name: api
entry: src/index.ts
triggers:
- type: http
method: GET
path: /health
- name: public-api
entry: src/public.ts
triggers:
- type: http
method: GET
path: /public
- name: admin-api
entry: src/admin.ts
triggers:
- type: http
method: POST
path: /admin
Deploy one function quickly:
runfabric deploy --function public-api -c runfabric.yml
Use createHandler from @runfabric/sdk:
import type { UniversalHandler } from "@runfabric/sdk";
import { createHandler } from "@runfabric/sdk";
export const handler: UniversalHandler = createHandler(appOrFastifyOrNestApp);
Framework wiring checklist:
npm i @runfabric/sdknpm i expressnpm i fastifynpm i @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs@types/express, etc.)."experimentalDecorators": true."emitDecoratorMetadata": true.reflect-metadata is imported before Nest bootstrap where required.service: worker-app
provider:
name: aws-lambda
runtime: nodejs
functions:
- name: worker
entry: src/worker.ts
triggers:
- type: queue
queue: arn:aws:sqs:us-east-1:123456789012:jobs
- type: storage
bucket: uploads
events:
- s3:ObjectCreated:*
examples/node/handler-scenarios/README.mdexamples/node/handler-scenarios/single-handler/runfabric.ymlexamples/node/handler-scenarios/multi-handler/runfabric.yml