Skip to content

Services

Each service defined in your Raindrop build manifests maps to a serverless function. These services can be activated in one of three ways:

The following sections will guide you on defining each activation mechanism in your Raindrop manifest.

HTTP-Activated Service

To create a new HTTP-activated service to your application add the following code to your manifest.

service "<SERVICE NAME>" {
domain {
fqdn = "<UNIQUE-SERVICE-NAME>.<ORG-ID>.lmapp.run"
}
}

To configure your service’s domain:

  1. Replace <UNIQUE-SERVICE-NAME> with a name for your service
  2. Replace <ORG-ID> with your organization ID (in lowercase)

You can find your organization ID in the Raindrop dashboard URL at liquidmetal.run. Your organization ID is added to the end of the URL e.g https://liquidmetal.run/o/org_<YOUR-ORG-ID>

Each HTTP-activated service must have a unique, fully qualified domain name (FQDN). To prevent conflicts, ensure that the service name is unique within your account. Once deployed, your new service will be accessible as a CRUD REST API.

Queue-Activated Service

Queue-activated services run when new messages arrive in a queue. Define your queue first - this becomes the trigger source for your observer.

Adding a queue observer to raindrop.manifest automatically sets up the function code, queue configuration, and required service bindings after running raindrop build generate.

// define your queue
queue "email-queue" { }
// define a queue observer
observer "queue-observer" {
// set the queue as the trigger on the observer
source {
queue = "queue-name"
}
}

Bucket-Activated Service

Bucket-activated services run when new objects appear in a bucket. Define your bucket first - this becomes the trigger source for your observer.

Adding a bucket observer to raindrop.manifest automatically sets up the function code, bucket configuration, and required service bindings after running raindrop build generate.

// define your bucket
bucket "ingest-bucket" { }
// define your observer
observer "process-object" {
// set the bucket as the source for the observer
source {
bucket = "ingest-bucket"
}
}