Skip to main content

Synchronizing checkpoints to object store

Feldera allows synchronizing pipeline checkpoints to an object store and restoring them at startup.

Storage configuration

Checkpoint sync is supported only with the file backend and uses rclone under the hood to interact with S3-compatible object stores.

Here is a sample configuration:

"storage": {
"backend": {
"name": "file",
"config": {
"sync": {
"bucket": "BUCKET_NAME/DIRECTORY_NAME",
"provider": "AWS",
"access_key": "ACCESS_KEY",
"secret_key": "SECRET_KEY",
"start_from_checkpoint": true
}
}
}
}

sync configuration fields

FieldTypeDescription
endpointstringThe S3-compatible object store endpoint (e.g., for MinIO, AWS).
bucket*stringThe bucket name and optional prefix to store checkpoints (e.g., mybucket/checkpoints).
provider*stringThe S3 provider identifier. Must match rclone's list. Case-sensitive. Use "Other" if unsure.
access_keystringYour S3 access key. Not required if using environment-based authentication (e.g., IRSA).
secret_keystringYour S3 secret key. Same rules as access_key.
start_from_checkpoint*booleanIf true, Feldera will restore the latest checkpoint from the object store on startup.

IRSA

To use IRSA (IAM Roles for Service Accounts) omit fields access_key and secret_key. This loads credentials from the environment.

triggering a checkpoint sync

A sync operation can be trigged by making a POST request to:

curl -X POST http://localhost/v0/pipelines/{PIPELINE_NAME}/checkpoint/sync

This initiates the sync and returns the UUID of the checkpoint being synced:

{"checkpoint_uuid":"019779b4-8760-75f2-bdf0-71b825e63610"}

Checking sync status

The status of the sync operation can be checked by making a GET request to:

curl http://localhost/v0/pipelines/{PIPELINE_NAME}/checkpoint/sync_status

Response examples

In Progress:

{"success":null,"failure":null}

Success:

{"success":"019779b4-8760-75f2-bdf0-71b825e63610","failure":null}

Failure:

{
"success": null,
"failure": {
"uuid": "019779c1-8317-7a71-bd78-7b971f4a3c43",
"error": "Error pushing checkpoint to object store: ... SignatureDoesNotMatch ..."
}
}