Functions

Functions are units of execution in the AssemblyLift framework. They are grouped into services, and are themselves structured according to the chosen language (e.g with Rust each function is a Cargo crate).

Each function is compiled to a WebAssembly module, compatible with the AssemblyLift ABI.

Make a New Function

You can create a new function in an existing service with the make command:

$ asml make function myservice.myfunction

where myservice is the name of the service in which you would like to make the function named myfunction.

Defining an API

AssemblyLift functions can be exposed via an HTTP API. When using the AWS Lambda backend, this API is deployed to Amazon API Gateway.

service.toml
[service]
name = "myservice"
[api.functions.myfunction]
name = "myfunction"
http = { verb = "GET", path = "/" }

You define an API for a function using the http field, which accepts verb and path.

Defining an Authorizer

AssemblyLift supports defining authorizers and attaching them per-function. Authorizers require an HTTP API to be defined for the function.

The Lambda backend currently supports IAM and JWT authorizers.

service.toml
[service]
name = "myservice"
[api.functions.myfunction]
name = "myfunction"
http = { verb = "GET", path = "/" }
authorizer_id = "cognito"
[api.authorizers.cognito]
auth_type = "JWT"
audience = ["clientid"]
issuer = "https://cognito-idp.us-east-1.amazonaws.com/myuserpoolid"