다음을 통해 공유


Bicep의 사용자 정의 함수

Bicep 파일 내에서 함수를 직접 만들 수 있습니다. 이러한 함수는 Bicep 파일에서 사용할 수 있습니다. 사용자 정의 함수는 Bicep 파일 내에서 자동으로 사용할 수 있는 표준 Bicep 함수와는 별개입니다. Bicep 파일에서 반복적으로 사용되는 복잡한 식이 있는 경우 고유한 함수를 만들 수 있습니다.

이 기능을 사용하려면 Bicep CLI 버전 0.26.X 이상이 필요합니다.

제한 사항

사용자 함수를 정의할 때는 다음과 같은 몇 가지 제한 사항이 있습니다.

  • 함수는 변수에 액세스할 수 없습니다.
  • 함수는 함수에 정의된 매개 변수만 사용할 수 있습니다.
  • 함수는 reference 함수 또는 list 함수를 사용할 수 없습니다.
  • 함수의 매개 변수는 기본값을 가질 수 없습니다.

함수의 정의

func 문을 사용하여 사용자 정의 함수를 정의합니다.

func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>

예제

다음 예제에서는 사용자 정의 함수를 정의하고 사용하는 방법을 보여 줍니다.

func buildUrl(https bool, hostname string, path string) string => '${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}'

func sayHelloString(name string) string => 'Hi ${name}!'

func sayHelloObject(name string) object => {
  hello: 'Hi ${name}!'
}

func nameArray(name string) array => [
  name
]

func addNameArray(name string) array => [
  'Mary'
  'Bob'
  name
]

output azureUrl string = buildUrl(true, 'microsoft.com', 'azure')
output greetingArray array = map(['Evie', 'Casper'], name => sayHelloString(name))
output greetingObject object = sayHelloObject('John')
output nameArray array = nameArray('John')
output addNameArray array = addNameArray('John')

이전 예제의 출력은 다음과 같습니다.

이름 타입
azureUrl 문자열 https://microsoft.com/azure
greetingArray 배열 ["Hi Evie!","Hi Casper!"]
greetingObject Object {"hello":"Hi John!"}
nameArray 배열 ["John"]
addNameArray 배열 ["Mary","Bob","John"]

Bicep CLI 버전 0.23.X 이상을 사용하면 사용자 정의 함수 내에서 다른 사용자 정의 함수를 유연하게 호출할 수 있습니다. 이전 예제에서 sayHelloString 함수 정의를 사용하면 sayHelloObject 함수를 다음과 같이 다시 정의할 수 있습니다.

func sayHelloObject(name string) object => {
  hello: sayHelloString(name)
}

사용자 정의 함수는 사용자 정의 데이터 형식 사용을 지원합니다. 예시:

@minValue(0)
type positiveInt = int

func typedArg(input string[]) positiveInt => length(input)

param inArray array = [
  'Bicep'
  'ARM'
  'Terraform'
]

output elements positiveInt = typedArg(inArray)

위 예제의 출력은 다음과 같습니다.

이름 타입
요소 positiveInt 3

다음 단계