For the complete documentation index, see llms.txt.
Skip to main content
Version: 8.10 (unreleased)

Document handling configuration in Camunda 8 Run

note

Camunda 8 Run can be used for local development only, and none of the storage options below are suitable for production.

Document Store configuration uses the unified camunda.document.* Spring property model. The sections below show the new configuration format. If you're migrating from legacy DOCUMENT_* environment variables, see property mapping reference.

Provide these properties in an application.yaml file. For example, set camunda.document.default-store-id to specify the active store.

If no storage configuration is provided, the default document storage is in-memory. Documents are lost when the application is stopped.

Deprecated: DOCUMENT_* and DOCUMENT_STORE_* environment variables

The legacy DOCUMENT_* and DOCUMENT_STORE_* environment variables (for example, DOCUMENT_STORE_AWS_BUCKET, DOCUMENT_DEFAULT_STORE_ID) are deprecated. They continue to work for at least one release cycle via a backward compatibility bridge, but will be removed in a future release. When both the unified camunda.document.* properties and the legacy environment variables are set, camunda.document.* takes precedence.

Storage options

By using external cloud file bucket storage with AWS S3, documents can be stored in a secure and scalable way. Buckets are integrated per cluster to ensure proper isolation and environment-specific management.

camunda:
document:
default-store-id: aws1 # the instance ID defined below
aws:
aws1: # store instance ID — must match default-store-id
bucket-name: my-bucket
bucket-path: documents/ # optional
bucket-ttl: 30 # optional, days
PropertyRequiredDescription
camunda.document.aws.<id>.bucket-nameYesName of the AWS S3 bucket where documents are stored.
camunda.document.aws.<id>.bucket-pathNoFolder-like path within the S3 bucket. Defaults to "".
camunda.document.aws.<id>.bucket-ttlNoTime-to-live for documents in the bucket, in days.
camunda.document.default-store-idYesInstance ID of the store to use as the default.
camunda.document.thread-pool-sizeNoNumber of threads in the document store thread pool.
Deprecated: legacy environment variable equivalents
DOCUMENT_STORE_AWS_CLASS=io.camunda.document.store.aws.AwsDocumentStoreProvider
DOCUMENT_STORE_AWS_BUCKET=my-bucket
DOCUMENT_STORE_AWS_BUCKET_PATH=documents/
DOCUMENT_STORE_AWS_BUCKET_TTL=30
DOCUMENT_DEFAULT_STORE_ID=aws

AWS SDK credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION) are resolved by the AWS SDK directly and are not part of camunda.document.*. Set them as environment variables as before.

Credentials variableRequiredDescription
AWS_ACCESS_KEY_IDYesAccess key ID used to interact with AWS S3 buckets.
AWS_SECRET_ACCESS_KEYYesThe AWS secret access key associated with AWS_ACCESS_KEY_ID, used to authenticate.
AWS_REGIONYesRegion where the bucket is.

API client permission requirements

AWS S3

The API client must have the following AWS Identity and Access Management (IAM) permissions:

PermissionDescription
s3:DeleteObjectThis permission authorizes the API client to remove objects from the specified S3 bucket.
s3:GetObjectThis permission is required to retrieve contents and metadata of objects from Amazon S3. The API client will utilize this permission to download or access the contents of the documents that have been uploaded to the bucket.
s3:ListBucketThis permission allows the application to verify it has access to the specified S3 bucket. Lack of this permission does not prevent the application from starting, but it logs a warning on application start-up.
s3:PutObjectTo upload documents to an Amazon S3 bucket, the API client must have this permission.

GCP

The API client must have the following permissions:

PermissionDescription
storage.buckets.getThis permission allows the application to verify it has access to the specified bucket. Lack of this permission does not prevent the application from starting, but it logs a warning on application start-up.
storage.objects.getThis permission allows the API client to retrieve objects from Google Cloud Storage. It is vital for downloading or accessing the contents of stored objects.
storage.objects.createWith this permission, the API client can upload new objects to a bucket. It is essential for adding new documents to the storage.
storage.objects.updateThis permission enables the API client to update contents and metadata of existing objects within a bucket.
storage.objects.deleteThis permission grants the API client the ability to delete objects from a bucket.
iam.serviceAccounts.signBlobThis permission allows the service account to sign data as part of the process to create secure, signed URLs for accessing uploaded documents.

Azure Blob Storage

To use document handling with Azure Blob Storage, assign the Storage Blob Data Contributor RBAC role to the identity on the storage account. This role grants the following permissions:

PermissionDescription
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readRead blob content and metadata.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/writeCreate or update blobs.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteDelete blobs from the container.

Property mapping reference

Use this table to migrate from legacy DOCUMENT_* environment variables to the unified camunda.document.* properties.

Root-level

Legacy environment variableUnified property
DOCUMENT_DEFAULT_STORE_IDcamunda.document.default-store-id
DOCUMENT_THREAD_POOL_SIZEcamunda.document.thread-pool-size

AWS S3

Legacy environment variableUnified property
DOCUMENT_STORE_<id>_CLASS=...AwsDocumentStoreProviderImplicit — use the aws namespace
DOCUMENT_STORE_<id>_BUCKETcamunda.document.aws.<id>.bucket-name
DOCUMENT_STORE_<id>_BUCKET_PATHcamunda.document.aws.<id>.bucket-path
DOCUMENT_STORE_<id>_BUCKET_TTLcamunda.document.aws.<id>.bucket-ttl

GCP

Legacy environment variableUnified property
DOCUMENT_STORE_<id>_CLASS=...GcpDocumentStoreProviderImplicit — use the gcp namespace
DOCUMENT_STORE_<id>_BUCKETcamunda.document.gcp.<id>.bucket-name
DOCUMENT_STORE_<id>_PREFIXcamunda.document.gcp.<id>.prefix

Azure Blob

Legacy environment variableUnified property
DOCUMENT_STORE_<id>_CLASS=...AzureBlobDocumentStoreProviderImplicit — use the azure namespace
DOCUMENT_STORE_<id>_CONTAINERcamunda.document.azure.<id>.container-name
DOCUMENT_STORE_<id>_CONTAINER_PATHcamunda.document.azure.<id>.container-path
DOCUMENT_STORE_<id>_CONNECTION_STRINGcamunda.document.azure.<id>.connection-string
DOCUMENT_STORE_<id>_ENDPOINTcamunda.document.azure.<id>.endpoint

Local storage

Legacy environment variableUnified property
DOCUMENT_STORE_<id>_CLASS=...LocalStorageDocumentStoreProviderImplicit — use the local namespace
DOCUMENT_STORE_<id>_PATHcamunda.document.local.<id>.path

In-memory

Legacy environment variableUnified property
DOCUMENT_STORE_<id>_CLASS=...InMemoryDocumentStoreProviderImplicit — use the in-memory namespace

Startup validation

The application validates the Document Store configuration at startup and fails with a clear error message in the following cases:

  • Duplicate store IDs across namespaces: Each store instance ID must be unique across all provider namespaces (aws, gcp, azure, local, in-memory).
  • Missing required fields: Required properties (for example, bucket-name for AWS or container-name for Azure) must be set.
  • Unknown default-store-id: The value of camunda.document.default-store-id must match a configured store instance ID.