Export

Export your application data.

Through the export feature, you can export your application data to a provided S3 endpoint. We support not only AWS S3, but all S3-compatible object storage services. More storage backends may be added in the future.

The exported data is copied from live data and not backups. The application will continue to run during the export, so the data is not guaranteed to be consistent.

S3 Credentials#

For security reasons, we recommend creating a unique access key for your bucket. Here is a sample policy document with minimum permissions:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::USER_SID:user/USER_NAME"
      },
      "Action": ["s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutObject"],
      "Resource": ["arn:aws:s3:::BUCKET_NAME/*", "arn:aws:s3:::BUCKET_NAME"]
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

If exports are always written to empty paths, s3:DeleteObject may be omitted.

Scheduled Exports#

Exports can be scheduled to automatically run daily, weekly or monthly. It will perform an update of the data at the given path/prefix. Previous exports can be persisted using versioning.

Export Path Templating#

This feature is in preview, the properties listed below are subject to change.

Export paths can be templated using Go template syntax. The following properties are available:

PropertyDescription
IdApplication ID
NameApplication name
DomainPrimary domain
TimeTime in RFC3339 format
TimeUnixTime in Unix timestamp format
RotateDaily(int)Return daily slot number based on given total slots
RotateWeekly(int)Return weekly slot number based on given total slots
RotateMonthly(int)Return monthly slot number based on given total slots

Examples:

PathResult
/{{.Id}}-{{.Time}}/mastodon-c27059f9-2023-08-14T14:47:29Z
/{{.Domain}}-{{.RotateDaily 3}}/foo.com-1

Rotation#

Exports can be rotated using one of the Rotate functions. They take the maximum number of slots as an argument, and return a slot number for the current day, week or month. To create a weekly backup with 3 rotation slots, use {{.RotateWeekly 3}}.

Our Backup Strategy#

We aim to always keep your data safe and protected.

  • Databases are continuously backed up using write-ahead logging, additional full backups are created weekly.
  • Object storage is replicated across multiple availability zones, versioning is enabled.
  • Cluster metadata is backed up daily, and policies are in place to prevent erroneous deletions.
  • Backup execution is monitored by Prometheus.

All data is either stored in or backed up to object storage. Object storage is considered reliable, but nothing is perfect and mistakes happen. Therefore, we give you the option to export your data to a location you have full control over.