Config sources
This information is only applicable from version v25.5.x and up
Supported providers
ACE enables you to configure various providers for retrieving variables - this applies both for variables used to configure ACE services, as well as variables used in your workspace (e.g. $env.MY_VARIABLE
in flows).
Currently supported variable providers are:
env
- Environment variablesazure
- Azure key-vault secrets
Configuration
The configuration described in this section can only be retrieved from environment variables, whereas the rest of the configuration can come from various providers.
ACE_CONFIG_SOURCE
(default:env
) - Comma separated list of one or more providers to be used for retrieving variables. If a variable exists in multiple providers, the right-most provider takes precedence.
Azure provider
ACE configured to use ACE_CONFIG_SOURCE=azure
requires permission to Get, List
key-vault secrets.
Azure key-vault provider
ACE_AZURE_KEY_VAULT_URL
(required) - Specifies URL of the key-vault to be used.ACE_AZURE_KEY_VAULT_PREFIX
- Specifies secret keys should be searched based on prefix in the key-vault.
ACE uses the official @azure/identity
npm library with DefaultAzureCredential
, which specifies it's own ENV variables for configuring the key-vault - find further configuration here.
Azure naming limitations
Azure key-vault limits secret names to contain dashes. For this reason, ACE does a basic mapping when retrieving secrets from azure by mapping all dashes (-
) to underscores (_
).
Example: The key-vault secret REDIS-CACHE-KEY
will be retrieved by ACE as REDIS_CACHE_KEY
.
Practical example
Let's assume the following configuration is set:
ACE_CONFIG_SOURCE=env,azure
ACE_AZURE_KEY_VAULT_PREFIX=MY-ENV-
ACE_AZURE_KEY_VAULT_URL=<azkv-url>
# Envs expected by DefaultAzureCredential (@azure/identity)
AZURE_TOKEN_CREDENTIALS=prod
AZURE_TENANT_ID=<secret>
AZURE_CLIENT_ID=<secret>
AZURE_CLIENT_SECRET=<secret>
And let's assume these are the contents of each provider:
ACE_SECRET_ENCRYPTION_KEY=KEY_1
EXTERNAL_SERVICE_URL=URL_1
MY-ENV-ACE-SECRET-ENCRYPTION-KEY=KEY_2
# Notice: this variable does not have the expected `MY-ENV-` prefix, so it will not be resolved.
EXTERNAL-SERVICE-URL=URL_2
ACE would resolve the variables as such:
ACE_SECRET_ENCRYPTION_KEY
asKEY_2
.
Variable is defined in bothenv
andazure
, butazure
is higher priority because it appears last inACE_CONFIG_SOURCE
list.EXTERNAL_SERVICE_URL
asURL_1
.
Variable is only defined inenv
, and is the only place it can be resolved from.