Moving serverless functions to Open Source Cloud
If your backend is a set of AWS Lambda functions, the move is less about the code and more about the model around it. This page maps each Lambda building block to what runs here today, and says plainly where there is no equivalent.
What maps to Open Source Cloud today
Checked against the live service catalog. Your functions become small HTTP services that run on a runner, deployed straight from a Git repository.
What you use today: Node.js function behind API Gateway
On Open Source Cloud: My Apps (Web Runner)
Put the handler behind a small HTTP server such as Express or Fastify, listening on PORT. Connect the Git repository. No Dockerfile and no build config required.
What you use today: Python function
On Open Source Cloud: My Apps (Python Runner)
Put the handler behind FastAPI or Flask. Both are detected from the repository.
What you use today: Go function
On Open Source Cloud: My Apps (Golang Runner)
Replace lambda.Start with a net/http server on PORT. The rest of your code stays as it is.
What you use today: .NET function
On Open Source Cloud: My Apps (.NET Runner)
Host the handler in an ASP.NET Core minimal API.
What you use today: Small JavaScript or TypeScript functions
On Open Source Cloud: lambda (catalog service)
Zip the code and upload it, and it runs on each HTTP request. The closest fit to one function per endpoint.
What you use today: Scheduled function (EventBridge rule)
On Open Source Cloud: My Jobs
Runs a Python script from a Git repository on a cron schedule. For a schedule in another language, run the timer inside a My App.
What you use today: SQS queue
On Open Source Cloud: SmoothMQ
Describes itself as a drop-in replacement for SQS. Point your SDK at the new endpoint and run the consumer as a My App that polls the queue. Test your calls before you cut over.
What you use today: S3 bucket
On Open Source Cloud: MinIO
S3-compatible API, so the AWS SDK keeps working with a new endpoint and keys. Copy the objects across with S3 Sync.
What you use today: RDS for PostgreSQL
On Open Source Cloud: PostgreSQL
Standard connection string. Import with pg_dump and pg_restore.
What you use today: ElastiCache for Redis
On Open Source Cloud: Valkey
Speaks the Redis protocol, so it is a drop-in. Point your client at the new host.
What you use today: Environment variables, Parameter Store, Secrets Manager
On Open Source Cloud: Parameter store
Values are injected into the app as environment variables when it starts. You move the values, not the API calls.
| What you use today | On Open Source Cloud | How the move works |
|---|---|---|
| Node.js function behind API Gateway | My Apps (Web Runner) | Put the handler behind a small HTTP server such as Express or Fastify, listening on PORT. Connect the Git repository. No Dockerfile and no build config required. |
| Python function | My Apps (Python Runner) | Put the handler behind FastAPI or Flask. Both are detected from the repository. |
| Go function | My Apps (Golang Runner) | Replace lambda.Start with a net/http server on PORT. The rest of your code stays as it is. |
| .NET function | My Apps (.NET Runner) | Host the handler in an ASP.NET Core minimal API. |
| Small JavaScript or TypeScript functions | lambda (catalog service) | Zip the code and upload it, and it runs on each HTTP request. The closest fit to one function per endpoint. |
| Scheduled function (EventBridge rule) | My Jobs | Runs a Python script from a Git repository on a cron schedule. For a schedule in another language, run the timer inside a My App. |
| SQS queue | SmoothMQ | Describes itself as a drop-in replacement for SQS. Point your SDK at the new endpoint and run the consumer as a My App that polls the queue. Test your calls before you cut over. |
| S3 bucket | MinIO | S3-compatible API, so the AWS SDK keeps working with a new endpoint and keys. Copy the objects across with S3 Sync. |
| RDS for PostgreSQL | PostgreSQL | Standard connection string. Import with pg_dump and pg_restore. |
| ElastiCache for Redis | Valkey | Speaks the Redis protocol, so it is a drop-in. Point your client at the new host. |
| Environment variables, Parameter Store, Secrets Manager | Parameter store | Values are injected into the app as environment variables when it starts. You move the values, not the API calls. |
What changes in the code
The business logic stays. What goes is the event wrapper: a handler that receives an API Gateway event becomes a route that receives an HTTP request.
export const handler = async (event) => {
const { name } = JSON.parse(event.body);
return {
statusCode: 200,
body: JSON.stringify({ hello: name })
};
};import express from 'express';
const app = express();
app.use(express.json());
app.post('/hello', (req, res) => {
const { name } = req.body;
res.json({ hello: name });
});
app.listen(process.env.PORT || 8080);What does not carry over
Stated plainly, because discovering it after you have moved is worse. If your design depends on one of these, keep that part where it is.
- Scale to zero and paying per request. An app here is a process that keeps running. It does not stop between requests and is not billed per invocation. For a function that is idle most of the day, compare the cost before you move it.
- Automatic scaling with traffic. There is no per-request concurrency that grows on its own. High-availability mode adds a standby for deploys without downtime, not extra capacity.
- Event triggers wired up for you. There is no managed equivalent of an upload notification, a queue event source or a stream calling your code. Your app polls the queue, or the code that writes the object starts the work itself.
- DynamoDB. There is no DynamoDB-compatible API in the catalog. PostgreSQL, Ferret DB or Valkey can hold the data, but the data access code has to be rewritten.
- Gateway features such as usage plans and IAM authorizers. Routing and authentication live in your app, or in an identity server such as Keycloak.
- Java functions and container image functions. There is no Java runtime in the catalog today, and bringing an arbitrary container image is not a self-service option yet.
Spiky, event-driven work that sits idle most of the time is what a functions platform is built for. The move pays off for APIs and workers that run all day anyway. We would rather say so now than take the signup.
Runs at Elastx in Sweden
Since 25 August 2026, Open Source Cloud runs on Elastx, a Swedish infrastructure provider, in Stockholm. Your functions and their data move to a Swedish provider.
The full list of sub-processors, including the few that operate outside the EU/EEAHow the move works
Move one function first
Pick an HTTP function that runs often. Wrap its handler in a route as shown above and keep the rest of the code as it is.
Move config and data
Copy environment variables and secrets into a parameter store. Import the database with pg_dump and copy buckets with S3 Sync.
Deploy, test, cut over
Connect the repository and test the app on its stable URL. Then point your callers or your DNS at it and retire the function.
What you get
- No cold starts. The process is already running when the request arrives.
- Your code ends up as a plain Node.js, Python, Go or .NET HTTP service, which runs on any host, including your own hardware.
- Every service runs from upstream open source code. No proprietary wrappers or black-box extensions. Audit everything.
- 196+ services, launched from the web, from an API, or from an AI agent over MCP.
Try it with one function
A free account takes an email address and no credit card, and includes 100 tokens once. That is enough to deploy an app and watch it run. Keeping it running continuously needs a paid plan.