Introduction
TypeScript (ts) offers type safety which is helpful when working with the AWS SDK, which comes with ts definitions (d.ts)
compiling
Note: TypeScript is intentionally held at
5.x— the TypeScript 7 native compiler isn't yet supported by the surrounding ecosystem tooling (checked 2026-07-20).
Serverless Framework v4 has a built-in esbuild bundler, so there is no manual compilation step. Just run
npm i
and the .ts handlers under todos/ are packaged natively by serverless package / serverless deploy using the tsconfig.json in this directory.
For brevity, I have just demonstrated this to match with the todos/create.ts, todos/list.ts, todos/get.ts and todos/update.ts lambda function
Usage
You can create, retrieve, update, or delete todos with the following commands:
Create a Todo
curl -X POST https://XXXXXXX.execute-api.us-east-1.amazonaws.com/todos --data '{ "text": "Learn Serverless" }'
Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%
List all Todos
curl https://XXXXXXX.execute-api.us-east-1.amazonaws.com/todos
Example output:
[{"text":"Deploy my first service","id":"ac90feaa11e6-9ede-afdfa051af86","checked":true,"updatedAt":1479139961304},{"text":"Learn Serverless","id":"206793aa11e6-9ede-afdfa051af86","createdAt":1479139943241,"checked":false,"updatedAt":1479139943241}]%
Get one Todo
# Replace the <id> part with a real id from your todos table
curl https://XXXXXXX.execute-api.us-east-1.amazonaws.com/todos/<id>
Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%
Update a Todo
# Replace the <id> part with a real id from your todos table
curl -X PUT https://XXXXXXX.execute-api.us-east-1.amazonaws.com/todos/<id> --data '{ "text": "Learn Serverless", "checked": true }'
Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":true,"updatedAt":1479138570824}%