In past few articles, we have been discussing about Azure Bicep. We have seen how to create new resources or refer existing resources in bicep file. We also have seen few things about passing parameters to the bicep and how to reuse existing bicep modules.
The bicep file can also use some functions. In this short article, we are going to have a look at some basics about bicep functions.
Namespace
Functions can be from one of the two namespaces – az or sys. Generally, when we want to call any function, we do not need to specify the namespace. It is automatically resolved by bicep. But sometimes the symbolic name of a resource may conflict with a function name. In such cases, we may need to explicitly specify the namespace.
For example, if we declare a parameter with name range in a bicep file and if we want to use a range function in the same file, we will have to specify the namespace while calling the function.
The az namespace contains the functions which are related to deployment on Azure. The sys namespace contains the functions to construct values. It also contains decorators.
We are going to have a brief overview of some functions.
Some commonly used functions
There are various functions – some functions can be used to manipulate the date values & some other can be used to compute numeric values. There are also some functions to compute and modify string values.
Array Functions
These are set of functions which can be used with arrays. These are part of sys namespace. Some common functions are :
- contains – to check if array or string contains item to find
- empty – to check if array or string is empty
- length – to get the length of array
- min – to get minimum value from array
- max – to get maximum value from array
- range –
range(startIndex, count)
is to create array containing provided number of elements (2nd parameter) starting from index specified at first parameter - skip –
skip(originalValue, numberToSkip)
is to skip the number of elements from array specified in the first parameter - take –
take(originalValue, numberToTake)
is to take the number of elements specified from array specified as first parameter
There are also some other functions which can be used with arrays.
Date Functions
These are functions from sys namespace and these can be used to work with dates.
- dateTimeAdd –
dateTimeAdd(base, duration, [format])
is to add a time duration to a base date value. the third parameter is optional. - dateTimeFromEpoch –
dateTimeFromEpoch(epochTime)
converts an epoch value to datetime. - dateTimeToEpoch –
dateTimeToEpoch(dateTime)
converts a datetime value to epoch value - utcNow – provides current UTC time
Lambda Functions
These are also from sys namespace and these can be used while working with lambda expressions.