Azion IaC
The azion.config.js file is an IaC configuration file created during the application’s build process, based on the chosen preset, and serves as the source of truth for the configuration. Each preset provides a set of default settings, which can be replaced by the user. If the file is deleted, the default configuration will be recreated the next time the build process is triggered.
The configurations set by this file include:
- Build Configurations
- Origins
- Cache Settings
- Rules Engine
- Network List
- Purge Settings
The following tables explain the properties of this configuration file.
build
Property | Type | Description | Expected values |
---|---|---|---|
builder | String | The build tool to use | esbuild or webpack |
preset | Object | The preset to use | Property: name (String) |
entry | String | Entry point for your application | |
polyfills | Boolean | Whether to include Node.js polyfills | |
worker | Boolean | Whether to build an owner worker | |
custom | Object | Custom build configuration | |
memoryFS | Object | Memory file system configuration | Properties: InjectionDirs (Array) RemovePathPrefix (String) |
domain
Property | Type | Expected values | Error message |
---|---|---|---|
name | string | ||
cnameAccessOnly | boolean | ||
cnames | array | ||
edgeApplicationId | number | ||
edgeFirewallId | number | ||
digitalCertificateId | string, null | lets_encrypt or null | |
mtls | object | ||
mtls -> verification | string | enforce or permissive | |
mtls -> trustedCaCertificateId | number | ||
mtls -> crlList | array |
origin
Property | Type | Expected values | Error message |
---|---|---|---|
name | string | The ‘name’ field must be a string | |
type | string | single_origin (default)load_balancer live_ingest** object_storage | The ‘type’ field must be a string |
bucket | string, null | The ‘bucket’ field must be a string or null | |
prefix | string, null | The ‘prefix’ field must be a string or null | |
addresses | array | The ‘address’ field must be a string | |
hostHeader | string | The ‘hostHeader’ field must be a string | |
protocolPolicy | string | preserve (default)https http | The ‘protocolPolicy’ field must be a string |
hostHeader | string | The ‘hostHeader’ field must be a string | |
connectionTimeout | number | The ‘connectionTimeout’ field must be a number | |
timeoutBetweenBytes | number | The ‘timeoutBetweenBytes’ field must be a number | |
redirection | boolean | The ‘redirection’ field must be a boolean | |
hmac | object | The ‘hmac’ field must be an object | |
hmac -> region | string | The ‘region’ field must be a string | |
hmac -> accessKey | string | The ‘accessKey’ field must be a string | |
hmac -> secretKey | string | The ‘secretKey’ field must be a string | |
bucket | string, null | The ‘bucket’ field must be a string or null | |
prefix | string, null | The ‘prefix’ field must be a string or null | |
additionalProperties | boolean | No additional properties are allowed in origin item objects |
cache
Property | Type | Expected values | Error message |
---|---|---|---|
name | string | The ‘name’ field must be a string | |
stale | boolean | The ‘stale’ field must be a boolean | |
queryStringSort | boolean | The ‘queryStringSort’ field must be a boolean | |
methods -> post | boolean | The ‘post’ field must be a boolean | |
methods -> options | boolean | The ‘options’ field must be a boolean | |
methods -> additionalProperties | boolean | No additional properties are allowed in the ‘methods’ object | |
browser -> maxAgeSeconds | number OR string (mathematical expression) | 0 ≤ value ≥ 31536000 | The ‘maxAgeSeconds’ field must be a number or a valid mathematical expression |
browser -> additionalProperties | boolean | No additional properties are allowed in the ‘browser’ object | |
browser -> required | array | The ‘maxAgeSeconds’ field is required in the ‘browser’ object | |
edge -> maxAgeSeconds | number OR string (a mathematical expression) | 60 ≤ value ≥ 31536000 | The ‘maxAgeSeconds’ field must be a number or a valid mathematical expression |
edge -> additionalProperties | boolean | No additional properties are allowed in the ‘edge’ object | |
edge -> required | array | The ‘maxAgeSeconds’ field is required in the ‘edge’ object |
rules
Request rules
Property | Type | Error message |
---|---|---|
name | string | The ‘name’ field must be a string |
match | string | The ‘match’ field must be a string |
setOrigin -> name | string | The ‘name’ field must be a string |
setOrigin -> type | string | The ‘type’ field must be a string |
setOrigin -> additionalProperties | boolean | No additional properties are allowed in the ‘setOrigin’ object |
setOrigin -> required | array | The ‘name or type’ field is required in the ‘setOrigin’ object |
behavior -> rewrite | function | The behavior of the rewrite |
setHeaders | string, null | The ‘setHeaders’ field must be a string or null |
forwardCookies | boolean, null | The ‘forwardCookies’ field must be a boolean or null |
setCookie | string, null | The ‘setCookie’ field must be a string or null |
deliver | boolean, null | The ‘deliver’ field must be a boolean or null |
runFunction -> path | string | The ‘path’ field must be a string |
runFunction -> name | string, null | The ‘name’ field can be a string or null |
runFunction -> additionalProperties | boolean | No additional properties are allowed in the ‘runFunction’ object |
runFunction -> required | array | The ‘path’ field is required in the ‘runFunction’ object |
cache | string OR object | The ‘cache’ field must be either a string or an object with specified properties |
cache -> name (when cache is an object) | string | The ‘name’ field must be a string |
cache -> browser_cache_settings_maximum_ttl (when cache is an object) | number, null | The ‘browser_cache_settings_maximum_ttl’ field must be a number or null |
cache -> cdn_cache_settings_maximum_ttl (when cache is an object) | number, null | The ‘cdn_cache_settings_maximum_ttl’ field must be a number or null |
cache -> additionalProperties (when cache is an object) | boolean | No additional properties are allowed in the cache object |
cache -> required (when cache is an object) | array | The ‘name’ field is required in the cache object |
redirectTo301 | string | The ‘redirectTo301’ field must be a string |
enableGZIP | boolean | The ‘enableGZIP’ field must be a boolean |
redirectTo302 | string | The ‘redirectTo302’ field must be a string |
filterCookie | string | The ‘filterCookie’ field must be a string |
variable | string | The ‘variable’ field must be a string |
bypassCache | boolean | The ‘bypassCache’ field must be a boolean |
redirectHttps | boolean | The ‘redirectHttps’ field must be a boolean |
Response rules
Property | Type | Error message |
---|---|---|
name | string | The ‘name’ field must be a string |
description | string | The ‘description’ field must be a string |
active | boolean | The ‘active’ field must be a boolean |
match | string | The ‘match’ field must be a string |
variable | string | The ‘variable’ field must be a string |
behavior -> setCookie | string, null | The ‘setCookie’ field must be a string or null |
behavior -> setHeaders | array of strings | Each item in ‘setHeaders’ must be a string |
behavior -> deliver | boolean, null | The ‘deliver’ field must be a boolean or null |
behavior -> capture -> match | string | The ‘match’ field must be a string |
behavior -> capture -> captured | string | The ‘captured’ field must be a string |
behavior -> capture -> subject | string | The ‘subject’ field must be a string |
behavior -> enableGZIP | boolean, null | The ‘enableGZIP’ field must be a boolean or null |
behavior -> filterCookie | string, null | The ‘filterCookie’ field must be a string or null |
behavior -> filterHeader | string, null | The ‘filterHeader’ field must be a string or null |
behavior -> runFunction -> path | string | The ‘path’ field must be a string |
behavior -> runFunction -> name | string, null | The ‘name’ field can be a string or null |
behavior -> redirectTo301 | string, null | The ‘redirectTo301’ field must be a string or null |
behavior -> redirectTo302 | string, null | The ‘redirectTo302’ field must be a string or null |
network list
Property | Type | Error message |
---|---|---|
id | number | The ‘id’ field must be a number |
listType | string | The ‘listType’ field must be a string |
listContent | array | The ‘listContent’ field must be an array of strings |
purge
Property | Type | Expected values | Error message |
---|---|---|---|
type | string | url , cachekey , wildcard | |
urls | array | ||
method | string delete | ||
layer | string | edge_caching , l2_caching |
For further information, access azion.config.js schema in the Azion Lib repository.
Example
Here’s an example of an implementation of the azion.config.js
file: