This plugin allows services to connect to Apache OpenDALâ„¢. OpenDAL is a data access layer that allows users to easily and efficiently retrieve data from various storage services in a unified way.

Users can connect OpenDAL to access data from a variety of storage services, including: S3, AzBlob (Azure Blob storage), GCS, OSS and so on.

Usage

IMPORTANT: Currently Shuttle isn’t able to provision a storage for you (yet). This means you will have to create the storage service first and setup the secrets accordingly.

Add shuttle-opendal to the dependencies for your service by running cargo add shuttle-opendal. This resource will be provided by adding the shuttle_opendal::Opendal attribute to your Shuttle main decorated function.

It returns a opendal::Operator for you to connect the storage service.

Example

In the case of an Axum server, your main function will look like this:

use opendal::Operator;
use shuttle_axum::ShuttleAxum;

#[shuttle_runtime::main]
async fn app(
    #[shuttle_opendal::Opendal(scheme = "s3")]
    storage: Operator,
) -> ShuttleAxum {}

Parameters

ParameterTypeDefaultDescription
schemestr"memory"The scheme of the storage service to connect to.

All secrets are loaded from your Secrets.toml file.

For instance, when using s3, you can configure the scheme to s3 and specify the secrets: bucket, access_key_id, and secret_access_key.

Visit the OpenDAL Documentation for more information on how to setup the secrets for the storage service you want to connect to.