Using resources in projects
Prerequisites
Before following this guide, you will need to create a project with the create-dagster
CLI.
Assets, asset checks, and sensors in Dagster frequently require resources that are instantiated elsewhere in the project.
For example, if you have created a new Dagster project with dg
called my_project
, you can define the resources at src/my_project/defs/aresource.py
:
src/my_project/defs/aresource.py
import dagster as dg
class AResource(dg.ConfigurableResource): ...
You can then make that resource available anywhere else in your project by defining a @dg.Definitions
function:
src/my_project/defs/resources.py
from my_project.defs.aresource import AResource
import dagster as dg
@dg.definitions
def defs() -> dg.Definitions:
return dg.Definitions(
resources={"a_resource": AResource(name="foo")},
)
You can now use the resource elsewhere in your project:
src/my_project/defs/assets.py
from my_project.defs.aresource import AResource
import dagster as dg
@dg.asset
def asset_one(a_resource: AResource): ...
Scaffolding resources
To create a resource dictionary like the above, you can run the following:
dg scaffold defs dagster.resources resources.py
which will create:
src/<project_name>/defs/resources.py
import dagster as dg
@dg.definitions
def resources() -> dg.Definitions:
return dg.Definitions(resources={})
and you can fill out the resource dictionary as needed.