Resources
Connect to databases, APIs, and other external systems.
Resources in Airplane allow you to easily configure connections to external systems like databases
and APIs and use them in your tasks and runbooks.
Using resources in tasks
Using resources in tasks
Resources can be attached to tasks and referenced from within the task.
SQL
SQL
When creating a SQL task you can choose a database resource to query against. The database is chosen
from the UI or set in the task definition.
REST
REST
When you create a REST task, you can select a REST API. The REST API's base URL will be used, as
well as any headers specified on the resource.
The REST API is chosen from the UI or set in the task definition.
JavaScript, Python, and other tasks
JavaScript, Python, and other tasks
Resource attachment
Resource attachment
Resources must be attached to tasks before they can be accessed via environment variables or
built-ins.
typescriptCopied1export default airplane.task(2{3slug: "my_task",4resources: {5// Where backend_db is the slug of a resource.6db: "backend_db"7},8},9async () => {...}10);
pythonCopied1@airplane.task(2resources=[3airplane.Resource(4alias="db",5# Where backend_db is the slug of a resource.6slug="backend_db",7),8],9)10def my_task():11pass
In your task definition file (the file with extension
.task.yaml
):yamlCopied1resources:2# Where backend_db is the slug of a resource.3db: backend_db
Navigate to the task's build settings. You'll see a Resources section which will allow you to
provide an alias for the resource that you select via the dropdown. The alias will default to the
resource's slug but can be changed.

Environment variables
Environment variables
When attached to a task, resources are passed as a JSON-encoded string via the environment variable
AIRPLANE_RESOURCES
. This contains a mapping of resource alias to a resource object. For more
information, see the Resource environment variables reference.Built-ins
Built-ins
The JavaScript and Python SDKs offer built-in functions for common operations
against resources. Once a resource is attached to a task, you can refer to the resource by alias in
the built-in.
For example, after attaching the SQL resource with slug
db
, you can refer to it using a built-in
to query the SQL database:typescriptCopied1const run = await airplane.sql.query<{ id: string; name: string; email: string }>(2"db", // Attached resource3"select * from users where name ilike :name", // SQL query to execute4{ args: { name: `%${name}%` } }, // Query arguments5);
pythonCopied1run = airplane.sql.query(2sql_resource="db", # Attached resource3query="select * from users where name ilike :name",4query_args={"name": f"%{params['name']}%"}5)
Next steps