README

On this page

Single-File AWS Lambda

This example is the smallest MatchBox Lambda shape:

Lambda.bx
event.json

Lambda.bx defines a class with:

function run(event, context, response)

The runtime passes the raw AWS Lambda event into event, an AWS-style context object into context, and a mutable Lambda proxy response struct into response.

Local Invoke

From the repo root:

cargo run -- lambda invoke docs/examples/aws_lambda_single_file/Lambda.bx \
  --event docs/examples/aws_lambda_single_file/event.json

Expected response shape:

{
  "body": "{\"message\":\"Hello from Lambda\",\"path\":\"/\",\"requestId\":\"local-request\"}",
  "cookies": [],
  "headers": {
    "Access-Control-Allow-Origin": "*",
    "Content-Type": "application/json"
  },
  "isBase64Encoded": false,
  "statusCode": 200
}

AWS CLI Setup

Before deploying, follow:

docs/building-and-deploying/aws-lambda-aws-cli-setup.md

You need:

  • AWS CLI v2
  • a configured AWS profile
  • a region
  • an existing Lambda execution role ARN

Deploy

Current development builds still require an explicit Linux Lambda bootstrap binary:

cargo run -- lambda deploy docs/examples/aws_lambda_single_file/Lambda.bx \
  --function matchbox-single-file-demo \
  --role arn:aws:iam::123456789012:role/matchbox-lambda-execution \
  --profile matchbox-dev \
  --region us-east-1 \
  --public \
  --bootstrap /path/to/linux-arm64-bootstrap

Use --public for an unauthenticated Function URL that anyone can invoke. Use --url instead if you want IAM-authenticated access.

After embedded release stubs are added, --bootstrap should go away.

If deploy succeeds, the command prints the Function URL. Test it with:

curl "https://your-url.lambda-url.us-east-1.on.aws/?name=AWS"

Expected body:

{
  "message": "Hello from AWS",
  "requestId": "...",
  "path": "/"
}
Edit this page Download Markdown Last updated Sep 30, 2026, 8:17:14 PM