Skip to content

Advanced object storage configuration

Delta-rs provides some addition values to be set in the storage_options for advanced use case:

  • Limit concurrent requests overall
  • Set retry configuration
  • Exponential backoff with decorrelated jitter algorithm details See here for more details
  • Mounted storage support
Config key Description
OBJECT_STORE_CONCURRENCY_LIMIT The number of concurrent connections the underlying object store can create
max_retries The maximum number of times to retry a request. Set to 0 to disable retries
retry_timeout The maximum length of time from the initial request after which no further retries will be attempted
backoff_config.init_backoff The initial backoff duration
backoff_config.max_backoff The maximum backoff duration
backoff_config.base The multiplier to use for the next backoff duration
MOUNT_ALLOW_UNSAFE_RENAME If set it will allow unsafe renames on mounted storage

Common Client Options

The following configuration options from ClientConfigKey work across all storage backends (S3, Azure, GCS, etc.) and control HTTP client behavior. These can be passed via storage_options regardless of which cloud provider you're using.

Config Key Description
allow_http Allow HTTP connections (non-HTTPS). Set to true for local development or testing with services like MinIO or LocalStack. Default: false
allow_invalid_certificates Skip TLS certificate validation. WARNING: This is dangerous and should only be used for testing. Default: false
connect_timeout Maximum time to wait for a connection to be established. Accepts duration strings like 30s, 5m.
timeout Maximum time for a complete request (including retries). Accepts duration strings like 60s, 10m.
proxy_url HTTP proxy URL to route requests through. Example: http://proxy.example.com:8080
proxy_ca_certificate PEM-encoded CA certificate for the proxy server (when using HTTPS proxy with custom CA)
proxy_excludes Comma-separated list of hosts to exclude from proxying. Example: localhost,127.0.0.1
pool_idle_timeout Maximum time a connection can remain idle in the connection pool before being closed. Accepts duration strings.
pool_max_idle_per_host Maximum number of idle connections to maintain per host. Default varies by backend.
http1_only Force HTTP/1.1 only, disable HTTP/2. Set to true if the server doesn't support HTTP/2. Default: false
http2_only Force HTTP/2 only. Set to true to require HTTP/2. Default: false
http2_keep_alive_interval Interval for HTTP/2 keep-alive pings. Accepts duration strings like 30s.
http2_keep_alive_timeout Timeout for HTTP/2 keep-alive ping responses. Accepts duration strings.
http2_keep_alive_while_idle Send HTTP/2 keep-alive pings even when no streams are active. Set to true to enable. Default: false
http2_max_frame_size Maximum HTTP/2 frame size in bytes. Must be between 16,384 and 16,777,215.
user_agent Custom User-Agent header to send with requests. Example: my-app/1.0
default_content_type Default Content-Type header for uploads when not otherwise specified. Example: application/octet-stream

Example Usage

from deltalake import write_deltalake

storage_options = {
    # Cloud-specific credentials
    'AWS_ACCESS_KEY_ID': 'your-key',
    'AWS_SECRET_ACCESS_KEY': 'your-secret',
    'AWS_REGION': 'us-east-1',

    # Common client options (work with any backend)
    'timeout': '120s',
    'connect_timeout': '30s',
    'pool_max_idle_per_host': '10',
}

write_deltalake("s3://bucket/table", df, storage_options=storage_options)

Development and Testing Options

For local development with services like MinIO, LocalStack, or Azurite:

storage_options = {
    'AWS_ACCESS_KEY_ID': 'test',
    'AWS_SECRET_ACCESS_KEY': 'test',
    'AWS_ENDPOINT_URL': 'http://localhost:4566',
    'allow_http': 'true',  # Required for non-HTTPS endpoints
    'connect_timeout': '10s',
    'timeout': '60s',
}

Warning

Never use allow_invalid_certificates: true in production environments. This disables critical security protections.

Note

For the complete and authoritative list of client configuration options, refer to the object_store ClientConfigKey documentation.