Skip to main content
Configuring object storage is the recommended setup for all production deployments of Firebolt Core. With object storage as the backing store for table data, durability does not depend on the persistent volumes mounted to each node — even a complete loss of all volumes does not cause data loss. See Data durability for a full explanation. To enable object storage, configure the storage scheme via managed_table_storage_api_scheme and set the bucket name via managed_table_bucket_name_override.

Prerequisites

Before you begin, ensure that you have the following installed and configured:
  • A Kubernetes cluster (v1.19+)
  • kubectl command-line tool configured to access your cluster
  • helm (v3+) installed on your local machine
  • An AWS account with permissions to create S3 buckets, IAM roles, and IAM policies

Use Amazon S3

The following examples use an S3 bucket named firebolt-core-demo-data but you can choose any name you like.

Create an S3 bucket

IAM role and IAM policy

Create an IAM role with the following IAM policy that grants Firebolt Core permissions to manage objects in this bucket. Use a mechanism like AWS IRSA or AWS Pod Identity to assign an IAM role with these permissions to your Firebolt Core workload.

Configure Core to use S3

Set aws_region, managed_table_storage_api_scheme and managed_table_bucket_name_override in your Firebolt Core node configuration.

Custom Kubernetes ServiceAccount

If you use AWS IRSA and created your own Kubernetes ServiceAccount, you can set it in the Helm chart via:

Confirm that object storage is working

To confirm that your managed storage works, you can create a table and see if new prefixes are created in your bucket. If the queries hang, make sure to check the logs of Firebolt Core and look out for any AWS IAM access denied error logs.