Configure your own buckets
Configure CARTO Self-Hosted to use your cloud storage buckets
This guide covers how to configure CARTO to use your cloud storage buckets. If you haven't created and configured them yet (CORS, IAM permissions), start with Object Storage prerequisites first.
Every CARTO Self-Hosted installation requires the following buckets:
Temp Bucket
Yes
Upload and import datasets into CARTO
.csv, .geojson, .zip
Assets Bucket
Yes
Stores map thumbnails and customization assets (logos, markers, etc.)
.png
Export Bucket
Optional
Export data from your data warehouse — create only if you use data export features
.csv, .json, .parquet
Import Bucket
Yes
workspaceImportsBucket
Upload and import datasets into CARTO
.csv, .geojson, .zip
Thumbnails Bucket
Yes
workspaceThumbnailsBucket
Stores map thumbnails and customization assets (logos, markers, etc.)
.png
Export Bucket
Optional
workspaceExportsBucket (BigQuery) / awsExportBucket (S3)
Export data from your data warehouse — create only if you use data export features
.csv, .json, .parquet
Configuration notes
Assets / Thumbnails bucket access
By default, all thumbnail objects are configured to be publicly accessible. This ensures that features like custom branding and map markers function correctly.
You can change this in the Admin Console using the "Assets bucket is Public" config.

Setting the bucket to private will disable the public markers feature since it relies on public image assets.
To make thumbnails private, set in your customizations.yaml:
Some features (branding, custom markers) require public access.
To maintain a private bucket while still enabling these features, configure your bucket with a hybrid access model:
Allow public objects: The bucket policy must allow individual objects to be made public, even if the bucket itself is private by default.
Enable fine-grained ACLs: Enable Access Control Lists (ACLs) so CARTO can set
public-readpermissions on specific thumbnail files.Disable server-side encryption: Bucket-level server-side encryption is often incompatible with public ACLs and must be disabled.
Export bucket provider requirements
BigQuery
Google Cloud Storage
Snowflake
AWS S3
Redshift
AWS S3
Amazon RDS (PostgreSQL)
AWS S3
Oracle
AWS S3
Bucket configuration
In the Admin Console → Config, select your preferred storage provider:

Create the following buckets in GCS:
Assets Bucket
Temp Bucket
Optionally, create the Data export Bucket if you plan to export data from your data warehouse.
Custom markers won't work unless the Assets bucket is public.
Configure CORS on the Temp and Assets buckets:
How do I set up CORS? Check the provider docs.
Ensure the identity used to access your GCS buckets has the
roles/storage.adminrole over the buckets.In the Admin Console, provide the Project ID of the GCP project where your GCS buckets are located.
Specify the names of the GCS buckets.
Create the following buckets in your AWS S3 account:
Assets Bucket
Temp Bucket
Data export Bucket (optional)
Custom markers won't work unless the Assets bucket is public.
When creating your S3 buckets:
ACLs must be enabled.
If server-side encryption is enabled, the user must be granted KMS key permissions (see AWS documentation).
Configure CORS on the Temp and Assets buckets:
How do I set up CORS? Check the provider docs.
Provide an Access Key ID and Secret Access Key with read/write access over the buckets.
Configure the region where the buckets are located. All buckets must be in the same AWS region.
Specify the names of the AWS buckets.
For Redshift exports — create an IAM role with the following settings:
Trusted entity type: Custom trust policy — replace <your_aws_user_arn>:
Add permissions (omit export bucket if not needed):
Specify the ARN of the role and the name of the exports bucket in the CARTO Self-Hosted configuration.
In case you'd like to enable importing data to Redshift, it's not mandatory to provide the exports bucket's name, but you'll have to follow these instructions once the CARTO Self-Hosted deployment is ready.
For Snowflake exports — create an IAM role with the same trust policy and the following permissions policy:
Specify the ARN of the role and the data export bucket name in the CARTO Self-Hosted configuration.
Create the following containers in your Azure Blob storage account:
Assets Bucket
Temp Bucket
Data export Bucket (optional)
Custom markers won't work unless the Assets bucket is public.
Configure CORS on the Temp and Assets buckets at the storage account level:
How do I set up CORS? Check the provider docs.
Provide an Access Key from the storage account's Security properties.
Specify the names of the containers.
Add the following lines to your customizations.yaml and replace the <values> with your own settings:
thumbnailsBucketExternalURLcan behttps://storage.googleapis.com/<thumbnails_bucket_name>/for public access orhttps://storage.cloud.google.com/<thumbnails_bucket_name>/for authenticated access.
Select a Service Account that will be used by CARTO to interact with the buckets:
Using a custom Service Account for both buckets and CARTO services (required for Workload Identity).
Using a dedicated Service Account only for the buckets.
Grant the selected Service Account the role roles/iam.serviceAccountTokenCreator at the Service Account permissions level (not project level).
Grant the selected Service Account the role roles/storage.admin on the buckets.
[OPTIONAL] Pass GCP credentials as secrets — only if using a dedicated Service Account for buckets:
Option 1 — automatically create the secret:
appSecrets.googleCloudStorageServiceAccountKey.valueshould be in plain text, preserving multiline format.
Option 2 — using an existing secret:
Add the following lines to your customizations.yaml and replace the <values> with your own settings:
thumbnailsBucketExternalURLshould behttps://<thumbnails_bucket_name>.s3.amazonaws.com/
Pass your AWS credentials as secrets:
Option 1 — automatically create a secret:
appSecrets.awsAccessKeyId.valueandappSecrets.awsAccessKeySecret.valueshould be in plain text.
Option 2 — using an existing secret:
Use the same namespace where you are installing the Helm chart.
Add the following lines to your customizations.yaml and replace the <values> with your own settings:
thumbnailsBucketExternalURLshould behttps://<azure_resource_group>.blob.core.windows.net/<thumbnails_bucket_name>/
Pass your Access Key as a secret:
Option 1 — automatically create the secret:
appSecrets.azureStorageAccessKey.valueshould be in plain text.
Option 2 — using an existing secret:
Data export bucket
For Redshift and Snowflake exports, an IAM role must be created and configured. Refer to the Redshift and Snowflake configuration steps in the AWS S3 tab above, then specify the ARN and bucket name in the Admin Console.
BigQuery
Grant read/write permissions to the CARTO service account on the GCS export bucket.
Add to your customizations.yaml:
Snowflake and Redshift
Snowflake and Redshift require an AWS S3 bucket for data exports. Create an IAM user with programmatic credentials if not already done.
If you already configured the Import and Thumbnails buckets using AWS S3, you can reuse the same IAM user.
Create an IAM role with the following settings:
Trusted entity type:
Custom trust policy— replace<your_aws_user_arn>:
Add permissions policy — replace
<your_aws_s3_bucket_name>:
Update your customizations.yaml:
Pass your AWS credentials as secrets:
Option 1 — automatically create the secret:
appSecrets.exportAwsSecretAccessKey.valueandappSecrets.exportAwsAccessKeyId.valueshould be in plain text, preserving the multiline and correctly tabulated.
Option 2 — using an existing secret:
Amazon RDS for PostgreSQL
The export bucket for Amazon RDS can be configured from the CARTO platform UI after deployment. See Configuring S3 bucket integration for Amazon RDS for PostgreSQL exports.
Last updated
Was this helpful?
