github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/docs/reference/configuration.md (about)

     1  ---
     2  title: lakeFS Server Configuration
     3  description: Configuration reference for lakeFS Server
     4  parent: Reference
     5  ---
     6  
     7  # lakeFS Server Configuration
     8  
     9  {% include toc.html %}
    10  
    11  Configuring lakeFS is done using a YAML configuration file and/or environment variable.
    12  The configuration file's location can be set with the '--config' flag. If not specified, the first file found in the following order will be used:
    13  1. ./config.yaml
    14  1. `$HOME`/lakefs/config.yaml
    15  1. /etc/lakefs/config.yaml
    16  1. `$HOME`/.lakefs.yaml
    17  
    18  Configuration items can each be controlled by an environment variable. The variable name will have a prefix of *LAKEFS_*, followed by the name of the configuration, replacing every '.' with a '_'.
    19  Example: `LAKEFS_LOGGING_LEVEL` controls `logging.level`.
    20  
    21  This reference uses `.` to denote the nesting of values.
    22  
    23  ## Reference
    24  
    25  * `logging.format` `(one of ["json", "text"] : "text")` - Format to output log message in
    26  * `logging.level` `(one of ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "NONE"] : "INFO")` - Logging level to output
    27  * `logging.audit_log_level` `(one of ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "NONE"] : "DEBUG")` - Audit logs level to output.
    28  
    29    **Note:** In case you configure this field to be lower than the main logger level, you won't be able to get the audit logs
    30    {: .note }
    31  * `logging.output` `(string : "-")` - A path or paths to write logs to. A `-` means the standard output, `=` means the standard error.
    32  * `logging.file_max_size_mb` `(int : 100)` - Output file maximum size in megabytes.
    33  * `logging.files_keep` `(int : 0)` - Number of log files to keep, default is all.
    34  * `actions.enabled` `(bool : true)` - Setting this to false will block hooks from being executed.
    35  * `actions.lua.net_http_enabled` `(bool : false)` - Setting this to true will load the `net/http` package.
    36  * `actions.env.enabled` `(bool : true)` - Environment variables accessible by hooks, disabled values evaluated to empty strings
    37  * `actions.env.prefix` `(string : "LAKEFSACTION_")` - Access to environment variables is restricted to those with the prefix. When environment access is enabled and no prefix is provided, all variables are accessible.
    38  * `database` - Configuration section for the lakeFS key-value store database
    39    + `database.type` `(string ["postgres"|"dynamodb"|"cosmosdb"|"local"] : )` - 
    40      lakeFS database type
    41    + `database.postgres` - Configuration section when using `database.type="postgres"`
    42      + `database.postgres.connection_string` `(string : "postgres://localhost:5432/postgres?sslmode=disable")` - PostgreSQL connection string to use
    43      + `database.postgres.max_open_connections` `(int : 25)` - Maximum number of open connections to the database
    44      + `database.postgres.max_idle_connections` `(int : 25)` - Maximum number of connections in the idle connection pool
    45      + `database.postgres.connection_max_lifetime` `(duration : 5m)` - Sets the maximum amount of time a connection may be reused `(valid units: ns|us|ms|s|m|h)`
    46    + `database.dynamodb` - Configuration section when using `database.type="dynamodb"`
    47      + `database.dynamodb.table_name` `(string : "kvstore")` - Table used to store the data
    48      + `database.dynamodb.scan_limit` `(int : 1025)` - Maximal number of items per page during scan operation
    49  
    50        **Note:** Refer to the following [AWS documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.Limit) for further information
    51        {: .note }
    52      + `database.dynamodb.endpoint` `(string : )` - Endpoint URL for database instance
    53      + `database.dynamodb.aws_region` `(string : )` - AWS Region of database instance
    54      + `database.dynamodb.aws_profile` `(string : )` - AWS named profile to use
    55      + `database.dynamodb.aws_access_key_id` `(string : )` - AWS access key ID
    56      + `database.dynamodb.aws_secret_access_key` `(string : )` - AWS secret access key
    57      + **Note:** `endpoint` `aws_region` `aws_access_key_id` `aws_secret_access_key` are not required and used mainly for experimental purposes when working with DynamoDB with different AWS credentials.
    58        {: .note }
    59      + `database.dynamodb.health_check_interval` `(duration : 0s)` - Interval to run health check for the DynamoDB instance (won't run if equal to 0).
    60      + `database.dynamodb.max_attempts` `(int : 10)` - The maximum number of attempts to perform on a DynamoDB request
    61      + `database.dynamodb.max_connections` `(int : 0)` - The maximum number of connections to DynamoDB. 0 means no limit.
    62    + `database.cosmosdb` - Configuration section when using `database.type="cosmosdb"`
    63      + `database.cosmosdb.key` `(string : "")` - If specified, will 
    64        be used to authenticate to the CosmosDB account. Otherwise, Azure SDK 
    65        default authentication (with env vars) will be used.
    66      + `database.cosmosdb.endpoint` `(string : "")` - CosmosDB account endpoint, e.g. `https://<account>.documents.azure.com/`.
    67      + `database.cosmosdb.database` `(string : "")` - CosmosDB database name.
    68      + `database.cosmosdb.container` `(string : "")` - CosmosDB container name.
    69      + `database.cosmosdb.throughput` `(int32 : )` - CosmosDB container's RU/s. If not set - the default CosmosDB container throughput is used. 
    70      + `database.cosmosdb.autoscale` `(bool : false)` - If set, CosmosDB container throughput is autoscaled (See CosmosDB docs for minimum throughput requirement). Otherwise, uses "Manual" mode ([Docs](https://learn.microsoft.com/en-us/azure/cosmos-db/provision-throughput-autoscale)).
    71    + `database.local` - Configuration section when using `database.type="local"`
    72      + `database.local.path` `(string : "~/lakefs/metadata")` - Local path on the filesystem to store embedded KV metadata, like branches and uncommitted entries
    73      + `database.local.sync_writes` `(bool: true)` - Ensure each write is written to the disk. Disable to increase performance
    74      + `database.local.prefetch_size` `(int: 256)` - How many items to prefetch when iterating over embedded KV records
    75      + `database.local.enable_logging` `(bool: false)` - Enable trace logging for local driver
    76  * `listen_address` `(string : "0.0.0.0:8000")` - A `<host>:<port>` structured string representing the address to listen on
    77  * `tls.enabled` `(bool :false)` - Enable TLS listening. The `listen_address` will be used to serve HTTPS requests. (mainly for local development)
    78  * `tls.cert_file` `(string : )` - Server certificate file path used while serve HTTPS (.cert or .crt file - signed certificates).
    79  * `tls.key_file` `(string : )` - Server secret key file path used whie serve HTTPS (.key file - private key).
    80  * `auth.cache.enabled` `(bool : true)` - Whether to cache access credentials and user policies in-memory. Can greatly improve throughput when enabled.
    81  * `auth.cache.size` `(int : 1024)` - How many items to store in the auth cache. Systems with a very high user count should use a larger value at the expense of ~1kb of memory per cached user.
    82  * `auth.cache.ttl` `(time duration : "20s")` - How long to store an item in the auth cache. Using a higher value reduces load on the database, but will cause changes longer to take effect for cached users.
    83  * `auth.cache.jitter` `(time duration : "3s")` - A random amount of time between 0 and this value is added to each item's TTL. This is done to avoid a large bulk of keys expiring at once and overwhelming the database.
    84  * `auth.encrypt.secret_key` `(string : required)` - A random (cryptographically safe) generated string that is used for encryption and HMAC signing
    85    **Note:** It is best to keep this somewhere safe such as KMS or Hashicorp Vault, and provide it to the system at run time
    86    {: .note }
    87  
    88  * `auth.login_duration` `(time duration : "168h")` - The duration the login token is valid for
    89  * `auth.login_max_duration` `(time duration : "168h")` - The maximum duration user can ask for a login token
    90  * `auth.cookie_domain` `(string : "")` - [Domain attribute](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_where_cookies_are_sent) to set the access_token cookie on (the default is an empty string which defaults to the same host that sets the cookie)
    91  * `auth.authentication_api.endpoint` `(string: https://external.authentication-service/api/v1)` - URL to external Authentication Service described at [authentication.yml](https://github.com/treeverse/lakeFS/blob/master/api/authentication.yml)
    92  * `auth.api.endpoint` `(string: https://external.service/api/v1)` - URL to external Authorization Service described at [authorization.yml](https://github.com/treeverse/lakeFS/blob/master/api/authorization.yml);
    93  * `auth.api.token` `(string: eyJhbGciOiJIUzI1NiIsInR5...)` - API token used to authenticate requests to api endpoint
    94  * `auth.api.health_check_timeout` `(time duration : "20s")` - Timeout duration for external auth API health check
    95  * `auth.api.skip_health_check` `(bool : false)` - Skip external auth API health check
    96  * `auth.authentication_api.endpoint` `(string : "")` - URL to external Authentication Service described at [authentication.yml](https://github.com/treeverse/lakeFS/blob/master/api/authentication.yml);
    97  * `auth.authentication_api.external_principals_enabled` `(bool : false)` - If true, external principals API will be enabled, e.g auth service and login api's.
    98  * `auth.remote_authenticator.enabled` `(bool : false)` - If specified, also authenticate users via this Remote Authenticator server.
    99  * `auth.remote_authenticator.endpoint` `(string : required)` - Endpoint URL of the remote authentication service (e.g. https://my-auth.example.com/auth).
   100  * `auth.remote_authenticator.default_user_group` `(string : Viewers)` - Create users in this group (i.e `Viewers`, `Developers`, etc).
   101  * `auth.remote_authenticator.request_timeout` `(duration : 10s)` - If specified, timeout for remote authentication requests.
   102  * `auth.cookie_auth_verification.validate_id_token_claims` `(map[string]string : )` - When a user tries to access lakeFS, validate that the ID token contains these claims with the corresponding values.
   103  * `auth.cookie_auth_verification.default_initial_groups` (string[] : [])` - By default, users will be assigned to these groups
   104  * `auth.cookie_auth_verification.initial_groups_claim_name` `(string[] : [])` - Use this claim from the ID token to provide the initial group for new users. This will take priority if `auth.cookie_auth_verification.default_initial_groups` is also set.
   105  * `auth.cookie_auth_verification.friendly_name_claim_name` `(string[] : )` - If specified, the value from the claim with this name will be used as the user's display name.
   106  * `auth.cookie_auth_verification.persist_friendly_name` `(string : false)` - If set to `true`, the friendly name is persisted to the KV store and can be displayed in the user list. This is meant to be used in conjunction with `auth.cookie_auth_verification.friendly_name_claim_name`.
   107  * `auth.cookie_auth_verification.external_user_id_claim_name` - `(string : )` - If specified, the value from the claim with this name will be used as the user's id name.
   108  * `auth.cookie_auth_verification.auth_source` - `(string : )` - If specified, user will be labeled with this auth source.
   109  * `auth.oidc.default_initial_groups` `(string[] : [])` - By default, OIDC users will be assigned to these groups
   110  * `auth.oidc.initial_groups_claim_name` `(string[] : [])` - Use this claim from the ID token to provide the initial group for new users. This will take priority if `auth.oidc.default_initial_groups` is also set.
   111  * `auth.oidc.friendly_name_claim_name` `(string[] : )` - If specified, the value from the claim with this name will be used as the user's display name.
   112  * `auth.oidc.persist_friendly_name` `(string : false)` - If set to `true`, the friendly name is persisted to the KV store and can be displayed in the user list. This is meant to be used in conjunction with `auth.oidc.friendly_name_claim_name`.
   113  * `auth.oidc.validate_id_token_claims` `(map[string]string : )` - When a user tries to access lakeFS, validate that the ID token contains these claims with the corresponding values.
   114  * `auth.ui_config.rbac` `(string: "simplified")` - "simplified", "external" or "internal" (enterprise feature).  In simplified mode, do not display policy in GUI.
   115    If you have configured an external auth server you can set this to "external" to support the policy editor.
   116    If you are using the enteprrise version of lakeFS, you can set this to "internal" to use the built-in policy editor.
   117  * `blockstore.type` `(one of ["local", "s3", "gs", "azure", "mem"] : required)`. Block adapter to use. This controls where the underlying data will be stored
   118  * `blockstore.default_namespace_prefix` `(string : )` - Use this to help your users choose a storage namespace for their repositories.
   119     If specified, the storage namespace will be filled with this default value as a prefix when creating a repository from the UI.
   120     The user may still change it to something else.
   121  * `blockstore.signing.secret_key` `(string : required)` - A random generated string that is used for HMAC signing when using get/link physical address
   122  * `blockstore.local.path` `(string: "~/lakefs/data")` - When using the local Block Adapter, which directory to store files in
   123  * `blockstore.local.import_enabled` `(bool: false)` - Enable import for local Block Adapter, relevant only if you are using shared location
   124  * `blockstore.local.import_hidden` `(bool: false)` - When enabled import will scan and import any file or folder that starts with a dot character.
   125  * `blockstore.local.allowed_external_prefixes` `([]string: [])` - List of absolute path prefixes used to match any access for external location (ex: /var/data/). Empty list mean no access to external location.
   126  * `blockstore.gs.credentials_file` `(string : )` - If specified will be used as a file path of the JSON file that contains your Google service account key
   127  * `blockstore.gs.credentials_json` `(string : )` - If specified will be used as JSON string that contains your Google service account key (when credentials_file is not set)
   128  * `blockstore.gs.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL.
   129  * `blockstore.gs.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL.
   130  * `blockstore.gs.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI.
   131  * `blockstore.azure.storage_account` `(string : )` - If specified, will be used as the Azure storage account
   132  * `blockstore.azure.storage_access_key` `(string : )` - If specified, will be used as the Azure storage access key
   133  * `blockstore.azure.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL.
   134  * `blockstore.azure.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL.
   135  * `blockstore.azure.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI.
   136  * ~~`blockstore.azure.china_cloud` `(bool : false)`~~ - Enable for using lakeFS on Azure China Cloud.  
   137    **Note:** Deprecated - In favor of `blockstore.azure.domain` 
   138    {: .note }
   139  * `blockstore.azure.domain` `(string : blob.core.windows.net)` - Enables support of different Azure cloud domains. Current supported domains (in Beta stage): [`blob.core.chinacloudapi.cn`, `blob.core.usgovcloudapi.net`]
   140  * `blockstore.s3.region` `(string : "us-east-1")` - Default region for lakeFS to use when interacting with S3.
   141  * `blockstore.s3.profile` `(string : )` - If specified, will be used as a [named credentials profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles)
   142  * `blockstore.s3.credentials_file` `(string : )` - If specified, will be used as a [credentials file](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
   143  * `blockstore.s3.credentials.access_key_id` `(string : )` - If specified, will be used as a static set of credential
   144  * `blockstore.s3.credentials.secret_access_key` `(string : )` - If specified, will be used as a static set of credential
   145  * `blockstore.s3.credentials.session_token` `(string : )` - If specified, will be used as a static session token
   146  * `blockstore.s3.endpoint` `(string : )` - If specified, custom endpoint for the AWS S3 API (https://s3_compatible_service_endpoint:port)
   147  * `blockstore.s3.force_path_style` `(bool : false)` - When true, use path-style S3 URLs (https://<host>/<bucket> instead of https://<bucket>.<host>)
   148  * `blockstore.s3.discover_bucket_region` `(bool : true)` - (Can be turned off if the underlying S3 bucket doesn't support the GetBucketRegion API).
   149  * `blockstore.s3.skip_verify_certificate_test_only` `(bool : false)` - Skip certificate verification while connecting to the storage endpoint. Should be used only for testing.
   150  * `blockstore.s3.server_side_encryption` `(string : )` - Server side encryption format used (Example on AWS using SSE-KMS while passing "aws:kms")
   151  * `blockstore.s3.server_side_encryption_kms_key_id` `(string : )` - Server side encryption KMS key ID
   152  * `blockstore.s3.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL.
   153  * `blockstore.s3.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL.
   154  * `blockstore.s3.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI.
   155  * `blockstore.s3.disable_pre_signed_multipart` `(bool : )` - Disable use of pre-signed multipart upload **experimental**, enabled on s3 block adapter with presign support.
   156  * `blockstore.s3.client_log_request` `(bool : false)` - Set SDK logging bit to log requests
   157  * `blockstore.s3.client_log_retries` `(bool : false)` - Set SDK logging bit to log retries
   158  * `graveler.reposiory_cache.size` `(int : 1000)` - How many items to store in the repository cache.
   159  * `graveler.reposiory_cache.ttl` `(time duration : "5s")` - How long to store an item in the repository cache.
   160  * `graveler.reposiory_cache.jitter` `(time duration : "2s")` - A random amount of time between 0 and this value is added to each item's TTL.
   161  * `graveler.ensure_readable_root_namespace` `(bool: true)` - When creating a new repository use this to verify that lakeFS has access to the root of the underlying storage namespace. Set `false` only if lakeFS should not have access (i.e pre-sign mode only).
   162  * `graveler.commit_cache.size` `(int : 50000)` - How many items to store in the commit cache.
   163  * `graveler.commit_cache.ttl` `(time duration : "10m")` - How long to store an item in the commit cache.
   164  * `graveler.commit_cache.jitter` `(time duration : "2s")` - A random amount of time between 0 and this value is added to each item's TTL.
   165  * `graveler.max_batch_delay` `(duration : 3ms)` - Controls the server batching period for references store operations.
   166  * `graveler.background.rate_limit` `(int : 0)` - Requests per seconds limit on background work performed (default: 0 - unlimited), like deleting committed staging tokens.
   167  * `committed.local_cache` - an object describing the local (on-disk) cache of metadata from
   168    permanent storage:
   169    + `committed.local_cache.size_bytes` (`int` : `1073741824`) - bytes for local cache to use on disk.  The cache may use more storage for short periods of time.
   170    + `committed.local_cache.dir` (`string`, `~/lakefs/local_tier`) - directory to store local cache.
   171    +	`committed.local_cache.range_proportion` (`float` : `0.9`) - proportion of local cache to
   172      use for storing ranges (leaves of committed metadata storage).
   173    + `committed.local_cache.range.open_readers` (`int` : `500`) - maximal number of unused open
   174      SSTable readers to keep for ranges.
   175    + `committed.local_cache.range.num_shards` (`int` : `30`) - sharding factor for open SSTable
   176      readers for ranges.  Should be at least `sqrt(committed.local_cache.range.open_readers)`.
   177    + `committed.local_cache.metarange_proportion` (`float` : `0.1`) - proportion of local cache
   178      to use for storing metaranges (roots of committed metadata storage).
   179    + `committed.local_cache.metarange.open_readers` (`int` : `50`) - maximal number of unused open
   180      SSTable readers to keep for metaranges.
   181    + `committed.local_cache.metarange.num_shards` (`int` : `10`) - sharding factor for open
   182      SSTable readers for metaranges.  Should be at least
   183      `sqrt(committed.local_cache.metarange.open_readers)`.
   184  + `committed.block_storage_prefix` (`string` : `_lakefs`) - Prefix for metadata file storage
   185    in each repository's storage namespace
   186  + `committed.permanent.min_range_size_bytes` (`int` : `0`) - Smallest allowable range in
   187    metadata.  Increase to somewhat reduce random access time on committed metadata, at the cost
   188    of increased committed metadata storage cost.
   189  + `committed.permanent.max_range_size_bytes` (`int` : `20971520`) - Largest allowable range in
   190    metadata.  Should be close to the size at which fetching from remote storage becomes linear.
   191  + `committed.permanent.range_raggedness_entries` (`int` : `50_000`) - Average number of object
   192    pointers to store in each range (subject to `min_range_size_bytes` and
   193    `max_range_size_bytes`).
   194  + `committed.sstable.memory.cache_size_bytes` (`int` : `200_000_000`) - maximal size of
   195    in-memory cache used for each SSTable reader.
   196  + `email.smtp_host` `(string)` - A string representing the URL of the SMTP host.
   197  + `email.smtp_port` (`int`) - An integer representing the port of the SMTP service (465, 587, 993, 25 are some standard ports)
   198  + `email.use_ssl` (`bool : false`) - Use SSL connection with SMTP host.
   199  + `email.username` `(string)` - A string representing the username of the specific account at the SMTP. It's recommended to provide this value at runtime from a secret vault of some sort.
   200  + `email.password` `(string)` - A string representing the password of the account. It's recommended to provide this value at runtime from a secret vault of some sort.
   201  + `email.local_name` `(string)` - A string representing the hostname sent to the SMTP server with the HELO command. By default, "localhost" is sent.
   202  + `email.sender` `(string)` - A string representing the email account which is set as the sender.
   203  + `email.limit_every_duration` `(duration : 1m)` - The average time between sending emails. If zero is entered, there is no limit to the amount of emails that can be sent.
   204  + `email.burst` `(int: 10)` - Maximal burst of emails before applying `limit_every_duration`. The zero value means no burst and therefore no emails can be sent.
   205  + `email.lakefs_base_url` `(string : "http://localhost:8000")` - A string representing the base lakeFS endpoint to be directed to when emails are sent inviting users, reseting passwords etc.
   206  * `gateways.s3.domain_name` `(string : "s3.local.lakefs.io")` - a FQDN
   207    representing the S3 endpoint used by S3 clients to call this server
   208    (`*.s3.local.lakefs.io` always resolves to 127.0.0.1, useful for
   209    local development, if using [virtual-host addressing](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html).
   210  * `gateways.s3.region` `(string : "us-east-1")` - AWS region we're pretending to be in, it should match the region configuration used in AWS SDK clients
   211  * `gateways.s3.fallback_url` `(string)` - If specified, requests with a non-existing repository will be forwarded to this URL. This can be useful for using lakeFS side-by-side with S3, with the URL pointing at an [S3Proxy](https://github.com/gaul/s3proxy) instance.
   212  * `gateways.s3.verify_unsupported` `(bool : true)` - The S3 gateway errors on unsupported requests, but when disabled, defers to target-based handlers.
   213  * `stats.enabled` `(bool : true)` - Whether to periodically collect anonymous usage statistics
   214  * `stats.flush_interval` `(duration : 30s)` - Interval used to post anonymous statistics collected
   215  * `stats.flush_size` `(int : 100)` - A size (in records) of anonymous statistics collected in which we post
   216  * `security.audit_check_interval` `(duration : 24h)` - Duration in which we check for security audit.
   217  * `ui.enabled` `(bool: true)` - Whether to server the embedded UI from the binary
   218  * `ugc.prepare_max_file_size` `(int: 125829120)` - Uncommitted garbage collection prepare request, limit the produced file maximum size
   219  * `ugc.prepare_interval` `(duraction: 1m)` - Uncommitted garbage collection prepare request, limit produce time to interval
   220  * `installation.user_name` `(string : )` - When specified, an initial admin user will be created when the server is first run. Works only when `database.type` is set to local. Requires `installation.access_key_id` and `installation.secret_access_key`. 
   221  * `installation.access_key_id` `(string : )` - Admin's initial access key id (used once in the initial setup process)
   222  * `installation.secret_access_key` `(string : )` - Admin's initial secret access key (used once in the initial setup process)
   223  * `usage_report.enabled` `(bool : false)` - Store API and Gateway usage reports into key-value store.
   224  * `usage_report.flush_interval` `(duration : 5m)` - Sets interval for flushing in-memory usage data to key-value store.
   225  
   226  {: .ref-list }
   227  
   228  ## Using Environment Variables
   229  
   230  All the configuration variables can be set or overridden using environment variables.
   231  To set an environment variable, prepend `LAKEFS_` to its name, convert it to upper case, and replace `.` with `_`:
   232  
   233  For example, `logging.format` becomes `LAKEFS_LOGGING_FORMAT`, `blockstore.s3.region` becomes `LAKEFS_BLOCKSTORE_S3_REGION`, etc.
   234  
   235  
   236  ## Example Configurations
   237  
   238  ### Local Development with PostgreSQL database
   239  
   240  ```yaml
   241  ---
   242  listen_address: "0.0.0.0:8000"
   243  
   244  database:
   245    type: "postgres"
   246    postgres:
   247      connection_string: "postgres://localhost:5432/postgres?sslmode=disable"
   248  
   249  logging:
   250    format: text
   251    level: DEBUG
   252    output: "-"
   253  
   254  auth:
   255    encrypt:
   256      secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"
   257  
   258  blockstore:
   259    type: local
   260    local:
   261      path: "~/lakefs/dev/data"
   262  
   263  gateways:
   264    s3:
   265      region: us-east-1
   266  ```
   267  
   268  
   269  ### AWS Deployment with DynamoDB database
   270  
   271  ```yaml
   272  ---
   273  logging:
   274    format: json
   275    level: WARN
   276    output: "-"
   277  
   278  database:
   279    type: "dynamodb"
   280    dynamodb:
   281      table_name: "kvstore"
   282  
   283  auth:
   284    encrypt:
   285      secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"
   286  
   287  blockstore:
   288    type: s3
   289    s3:
   290      region: us-east-1 # optional, fallback in case discover from bucket is not supported
   291      credentials_file: /secrets/aws/credentials
   292      profile: default
   293  
   294  ```
   295  
   296  ### Google Storage
   297  
   298  ```yaml
   299  ---
   300  logging:
   301    format: json
   302    level: WARN
   303    output: "-"
   304  
   305  database:
   306    type: "postgres"
   307    postgres:
   308      connection_string: "postgres://user:pass@lakefs.rds.amazonaws.com:5432/postgres"
   309  
   310  auth:
   311    encrypt:
   312      secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"
   313  
   314  blockstore:
   315    type: gs
   316    gs:
   317      credentials_file: /secrets/lakefs-service-account.json
   318  
   319  ```
   320  
   321  ### MinIO
   322  
   323  ```yaml
   324  ---
   325  logging:
   326    format: json
   327    level: WARN
   328    output: "-"
   329  
   330  database:
   331    type: "postgres"
   332    postgres:
   333      connection_string: "postgres://user:pass@lakefs.rds.amazonaws.com:5432/postgres"
   334  
   335  auth:
   336    encrypt:
   337      secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"
   338  
   339  blockstore:
   340    type: s3
   341    s3:
   342      force_path_style: true
   343      endpoint: http://localhost:9000
   344      discover_bucket_region: false
   345      credentials:
   346        access_key_id: minioadmin
   347        secret_access_key: minioadmin
   348  
   349  ```
   350  ### Azure blob storage
   351  
   352  ```yaml
   353  ---
   354  logging:
   355    format: json
   356    level: WARN
   357    output: "-"
   358  
   359  database:
   360    type: "cosmosdb"
   361    cosmosdb:
   362      key: "ExampleReadWriteKeyMD7nkPOWgV7d4BUjzLw=="
   363      endpoint: "https://lakefs-account.documents.azure.com:443/"
   364      database: "lakefs-db"
   365      container: "lakefs-container"
   366  
   367  auth:
   368    encrypt:
   369      secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"
   370  
   371  blockstore:
   372    type: azure
   373    azure:
   374      storage_account: exampleStorageAcount
   375      storage_access_key: ExampleAcessKeyMD7nkPOWgV7d4BUjzLw==
   376  
   377  ```