Build a deployment package containing your application code and dependencies.
TypeScript
Python
Java
Kotlin
Go
Package your application as a zip file for Lambda:
npm run bundle
The Lambda handler to setup is app.handler.
Using uv, prepare a directory containing all the source and the dependencies, then zip it:
mkdir -p dist# Install project and dependencies directly into dist using uv pipuv pip install --python 3.13 --target dist .# Copy source codecp *.py dist/# Zip the dist contentcd dist && zip ../dist.zip -r * && cd ..
The lambda handler to setup is handler.app.
When installing the dependencies, make sure the python version and your machine architecture match the one configured in the Lambda runtime.
If you get an error like cannot import restate._internal, most likely you have a python version and/or architecture mismatch between the Lambda runtime and the machine where the packaging happens.
Build an uber jar with all dependencies, using gradle:
./gradlew shadowJar
Or using Maven:
mvn package
Upload the jar file from build/libs/ or target/ to Lambda.
Set the handler to your class name, e.g., com.example.MyLambdaHandler.
Build an uber jar with all dependencies:
./gradlew shadowJar
Upload the jar file from build/libs/ to Lambda.
Set the handler to your class name, e.g., com.example.MyLambdaHandler.
Build the Go binary for Lambda:
GOOS=linux GOARCH=amd64 go build -o bootstrap main.gozip function.zip bootstrap
Upload the zip file to Lambda.
The handler is automatically set to the binary name bootstrap.
Head over to your AWS dashboard to create the Lambda and upload the zip. For more details, follow the AWS Lambda documentation.
When using Cloud, you’ll need to create an IAM Role for Restate Cloud to invoke your Lambda.To set up the role, visit your Restate Cloud Dashboard at Developers > Security > AWS Lambda.
Always register a specific Lambda version (not $LATEST) to ensure Restate routes requests to a stable deployment.
Check the versioning documentation for more info.
Once your service is registered, you can start sending requests to it.
You can use this workflow with Self-hosted Restate as well,
just make sure to correctly set up RESTATE_AUTH_TOKEN and RESTATE_ADMIN_URL to reach your Restate cluster.