다음을 통해 공유


ARM 템플릿의 사용자 정의 함수

사용자 정의 함수는 ARM 템플릿에서 복잡한 식을 단순화하고 다시 사용하는 데 도움이 됩니다. 사용자 지정 함수의 논리를 캡슐화하여 템플릿 가독성, 유지 관리 가능성 및 확장성을 향상시킬 수 있습니다. 특히 동일한 논리가 여러 위치에 나타나는 경우 그렇습니다. 이러한 함수는 항상 사용할 수 있는 기본 제공 템플릿 함수와 다릅니다. Bicep에서 사용자 정의 함수를 정의하려면 Bicep의 사용자 정의 함수를 참조하세요.

함수 정의

템플릿 함수와의 명명 충돌을 방지하려면 함수에 네임스페이스 값이 필요합니다. 다음 예제에서는 고유한 이름을 반환하는 함수를 보여줍니다.

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

함수 사용

다음 예제에서는 스토리지 계정의 고유한 이름을 가져오는 사용자 정의 함수를 포함하는 템플릿을 보여 줍니다. 템플릿에는 함수에 매개 변수로 전달되는 명명 storageNamePrefix 된 매개 변수가 있습니다.

{
 "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
 "contentVersion": "1.0.0.0",
 "parameters": {
   "storageNamePrefix": {
     "type": "string",
     "maxLength": 11
   }
 },
 "functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[format('{0}{1}', toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],
 "resources": [
   {
     "type": "Microsoft.Storage/storageAccounts",
     "apiVersion": "2025-01-01",
     "name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
     "___location": "South Central US",
     "sku": {
       "name": "Standard_LRS"
     },
     "kind": "StorageV2",
     "properties": {
       "supportsHttpsTrafficOnly": true
     }
   }
 ]
}

배포하는 동안 storageNamePrefix 매개 변수는 함수에 전달됩니다.

  • 템플릿은 라는 storageNamePrefix매개 변수를 정의합니다.
  • 함수는 함수에 정의된 매개 변수만 사용할 수 있기 때문에 사용합니다 namePrefix . 자세한 내용은 제한 사항을 참조하세요.
  • 템플릿의 resources 섹션에서 name 요소는 함수를 사용하여 storageNamePrefix 값을 함수의 namePrefix에 전달합니다.

제한점

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

  • 함수는 변수에 액세스할 수 없습니다.
  • 함수는 함수에 정의된 매개 변수만 사용할 수 있습니다. 사용자 정의 함수 내에서 매개 변수 함수를 사용하는 경우 해당 함수에 대한 매개 변수로 제한됩니다.
  • 함수는 다른 사용자 정의 함수를 호출할 수 없습니다.
  • 함수는 참조 함수 또는 목록 함수를 사용할 수 없습니다.
  • 함수의 매개 변수는 기본값을 가질 수 없습니다.

다음 단계