Azure Resource Manager 템플릿의 구조 및 구문 이해Understand the structure and syntax of Azure Resource Manager templates

이 문서에서는 Azure Resource Manager 템플릿의 구조에 대해 설명합니다.This article describes the structure of an Azure Resource Manager template. 여기서는 템플릿의 다른 섹션 및 해당 섹션에서 사용할 수 있는 속성을 보여 줍니다.It presents the different sections of a template and the properties that are available in those sections.

이 문서는 리소스 관리자 템플릿에 대해 잘 알고 있는 사용자를 위한 것입니다.This article is intended for users who have some familiarity with Resource Manager templates. 템플릿의 구조에 대 한 자세한 정보를 제공 합니다.It provides detailed information about the structure of the template. 템플릿을 만드는 방법에 대 한 소개는 Azure Resource Manager 템플릿을 참조 하세요.If you want an introduction to creating a template, see Azure Resource Manager templates.

템플릿 형식Template format

가장 간단한 구조의 템플릿에 포함되는 요소는 다음과 같습니다.In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
요소 이름Element name 필수Required DescriptionDescription
$schema$schema Yes 템플릿 언어의 버전을 설명하는 JSON 스키마 파일의 위치입니다.Location of the JSON schema file that describes the version of the template language.

리소스 그룹 배포의 경우 https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#을 사용합니다.For resource group deployments, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

구독 배포의 경우 https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#을 사용합니다.For subscription deployments, use: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#
contentVersioncontentVersion Yes 템플릿의 버전입니다(예: 1.0.0.0).Version of the template (such as 1.0.0.0). 이 요소에 값을 제공할 수 있습니다.You can provide any value for this element. 이 값을 사용하여 템플릿에서 중요한 변경 내용을 문서화할 수 있습니다.Use this value to document significant changes in your template. 템플릿을 사용하여 리소스를 배포할 때 이 값을 사용하면 정확한 템플릿이 사용되도록 할 수 있습니다.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile 아니요No 리소스 종류에 대 한 API 버전 컬렉션으로 사용 되는 API 버전입니다.An API version that serves as a collection of API versions for resource types. 템플릿의 각 리소스에 대해 API 버전을 지정 하지 않으려면이 값을 사용 합니다.Use this value to avoid having to specify API versions for each resource in the template. API 프로필 버전을 지정 하 고 리소스 종류에 대 한 API 버전을 지정 하지 않는 경우 리소스 관리자는 프로필에 정의 된 해당 리소스 유형에 대 한 API 버전을 사용 합니다.When you specify an API profile version and don't specify an API version for the resource type, Resource Manager uses the API version for that resource type that is defined in the profile.

API profile 속성은 Azure Stack, 글로벌 Azure 등의 다양 한 환경에 템플릿을 배포 하는 경우에 특히 유용 합니다.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. API 프로필 버전을 사용 하 여 템플릿에서 두 환경 모두에서 지원 되는 버전을 자동으로 사용 하는지 확인 합니다.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. 프로필에 정의 된 현재 API 프로필 버전 및 리소스 API 버전 목록은 API 프로필을 참조 하세요.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

자세한 내용은 API 프로필을 사용 하 여 버전 추적을 참조 하세요.For more information, see Track versions using API profiles.
parametersparameters 아니요No 배포를 실행하여 리소스 배포를 사용자 지정할 때 제공되는 값입니다.Values that are provided when deployment is executed to customize resource deployment.
변수variables 아니요No 템플릿에서 템플릿 언어 식을 단순화하는 JSON 조각으로 사용되는 값입니다.Values that are used as JSON fragments in the template to simplify template language expressions.
functionsfunctions 아니요No 템플릿 내에서 사용할 수 있는 사용자 정의 함수입니다.User-defined functions that are available within the template.
resourcesresources Yes 리소스 그룹 또는 구독에 배포되거나 업데이트되는 리소스 종류입니다.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs 아니요No 배포 후 반환되는 값입니다.Values that are returned after deployment.

각 요소에는 사용자가 설정할 수 있는 속성이 있습니다.Each element has properties you can set. 이 기사에서는 템플릿의 섹션에 대해 자세히 설명합니다.This article describes the sections of the template in greater detail.

매개 변수Parameters

템플릿의 매개 변수 섹션에서는 리소스를 배포할 때 입력할 수 있는 값을 지정합니다.In the parameters section of the template, you specify which values you can input when deploying the resources. 템플릿에서 매개 변수는 256개로 제한됩니다.You're limited to 256 parameters in a template. 여러 속성을 포함 하는 개체를 사용 하 여 매개 변수 수를 줄일 수 있습니다.You can reduce the number of parameters by using objects that contain multiple properties.

매개 변수에 사용할 수 있는 속성은 다음과 같습니다.The available properties for a parameter are:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>" 
    }
  }
}
요소 이름Element name 필수Required DescriptionDescription
매개 변수-이름parameter-name Yes 매개 변수의 이름입니다.Name of the parameter. 유효한 JavaScript 식별자여야 합니다.Must be a valid JavaScript identifier.
typetype Yes 매개 변수 값의 유형입니다.Type of the parameter value. 허용되는 유형 및 값은 string, securestring, int, bool, object, secureObjectarray입니다.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
defaultValuedefaultValue 아니요No 매개 변수 값을 제공하지 않는 경우 매개 변수의 기본값입니다.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues 아니요No 올바른 값을 제공하도록 매개 변수에 대해 허용되는 값의 배열입니다.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue 아니요No Int 형식 매개 변수의 최소값이며, 이 값이 포함됩니다.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue 아니요No Int 형식 매개 변수의 최대값이며, 이 값이 포함됩니다.The maximum value for int type parameters, this value is inclusive.
minLengthminLength 아니요No string, securestring 및 array 형식 매개 변수의 최소 길이이며, 이 값이 포함됩니다.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength 아니요No string, securestring 및 array 형식 매개 변수의 최대 길이이며, 이 값이 포함됩니다.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription 아니요No 포털에서 사용자에게 표시되는 매개 변수의 설명입니다.Description of the parameter that is displayed to users through the portal. 자세한 내용은 템플릿의 주석을 참조하세요.For more information, see Comments in templates.

매개 변수를 사용 하는 방법에 대 한 예제는 Azure Resource Manager 템플릿의 매개 변수를 참조 하세요.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

변수Variables

변수 섹션에서 템플릿을 통해 사용할 수 있는 값을 생성합니다.In the variables section, you construct values that can be used throughout your template. 변수를 정의할 필요는 없지만 종종 변수를 통해 복잡한 식을 줄이면 템플릿이 단순화됩니다.You don't need to define variables, but they often simplify your template by reducing complex expressions.

다음 예에서는 변수를 정의 하는 데 사용할 수 있는 옵션을 보여 줍니다.The following example shows the available options for defining a variable:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": { 
    <variable-complex-type-value> 
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

를 사용 copy 하 여 변수에 대 한 여러 값을 만드는 방법에 대 한 자세한 내용은 변수 반복을 참조 하세요.For information about using copy to create several values for a variable, see Variable iteration.

변수를 사용 하는 방법에 대 한 예제는 Azure Resource Manager 템플릿의 변수를 참조 하세요.For examples of how to use variables, see Variables in Azure Resource Manager template.

함수Functions

템플릿 내에서 함수를 직접 만들 수 있습니다.Within your template, you can create your own functions. 이러한 함수는 템플릿에서 사용할 수 있습니다.These functions are available for use in your template. 일반적으로 템플릿 전체에서 반복하지 않으려는 복잡한 식을 정의합니다.Typically, you define complicated expression that you don't want to repeat throughout your template. 템플릿에서 지원되는 식 및 함수에서 사용자 정의 함수를 만듭니다.You create the user-defined functions from expressions and functions that are supported in templates.

사용자 함수를 정의할 때는 다음과 같은 몇 가지 제한 사항이 있습니다.When defining a user function, there are some restrictions:

  • 함수는 변수에 액세스할 수 없습니다.The function can't access variables.
  • 함수는 함수에 정의된 매개 변수만 사용할 수 있습니다.The function can only use parameters that are defined in the function. 사용자 정의 함수 내에서 parameters 함수 를 사용 하면 해당 함수에 대 한 매개 변수로 제한 됩니다.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • 함수는 다른 사용자 정의 함수를 호출할 수 없습니다.The function can't call other user-defined functions.
  • 함수는 참조 함수를 사용할 수 없습니다.The function can't use the reference function.
  • 함수의 매개 변수는 기본값을 가질 수 없습니다.Parameters for the function can't have default values.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
요소 이름Element name 필수Required 설명Description
namespacenamespace Yes 사용자 지정 함수에 대 한 네임 스페이스입니다.Namespace for the custom functions. 템플릿 함수와의 이름 충돌을 방지 하는 데 사용 합니다.Use to avoid naming conflicts with template functions.
함수 이름function-name Yes 사용자 지정 함수의 이름입니다.Name of the custom function. 함수를 호출할 때 함수 이름을 네임 스페이스와 결합 합니다.When calling the function, combine the function name with the namespace. 예를 들어 contoso 네임 스페이스에서 uniqueName 이라는 함수를 호출 하려면를 사용 "[contoso.uniqueName()]"합니다.For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
매개 변수-이름parameter-name 아니요No 사용자 지정 함수 내에서 사용 되는 매개 변수의 이름입니다.Name of the parameter to be used within the custom function.
매개 변수-값parameter-value 아니요No 매개 변수 값의 유형입니다.Type of the parameter value. 허용되는 유형 및 값은 string, securestring, int, bool, object, secureObjectarray입니다.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
출력 형식output-type Yes 출력 값의 유형입니다.Type of the output value. 출력 값은 함수 입력 매개 변수와 동일한 형식을 지원 합니다.Output values support the same types as function input parameters.
출력-값output-value Yes 함수에서 계산 되 고 반환 되는 템플릿 언어 식입니다.Template language expression that is evaluated and returned from the function.

사용자 지정 함수를 사용 하는 방법에 대 한 예제는 Azure Resource Manager 템플릿의 사용자 정의 함수를 참조 하세요.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

리소스Resources

리소스 섹션에서 배포되거나 업데이트되는 리소스를 정의합니다.In the resources section, you define the resources that are deployed or updated.

다음과 같은 구조를 사용하여 리소스를 정의합니다.You define resources with the following structure:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "apiVersion": "<api-version-of-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "name": "<name-of-the-resource>",
      "location": "<location-of-resource>",
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "comments": "<your-reference-notes>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
요소 이름Element name 필수Required 설명Description
조건condition 아니요No 리소스가 이 배포 중 프로비전되는지 여부를 나타내는 부울 값입니다.Boolean value that indicates whether the resource will be provisioned during this deployment. true인 경우 리소스는 배포하는 동안 만들어집니다.When true, the resource is created during deployment. false인 경우 리소스는 이 배포에 대해 건너뛰어집니다.When false, the resource is skipped for this deployment. 조건을 참조 하세요.See condition.
apiVersionapiVersion Yes 리소스를 만들 때 사용하는 REST API의 버전입니다.Version of the REST API to use for creating the resource. 사용 가능한 값을 확인 하려면 템플릿 참조를 참조 하세요.To determine available values, see template reference.
typetype Yes 리소스 유형입니다.Type of the resource. 이 값은 리소스 공급자의 네임스페이스와 리소스 형식을 조합한 값입니다(예: Microsoft.Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). 사용 가능한 값을 확인 하려면 템플릿 참조를 참조 하세요.To determine available values, see template reference. 자식 리소스의 경우 형식의 형식은 부모 리소스 내에 중첩 되어 있는지, 부모 리소스 외부에 정의 되는지에 따라 달라 집니다.For a child resource, the format of the type depends on whether it's nested within the parent resource or defined outside of the parent resource. 자식 리소스에 대한 이름 및 형식 설정을 참조하세요.See Set name and type for child resources.
namename Yes 리소스의 이름입니다.Name of the resource. 이 이름은 RFC3986에 정의된 URI 구성 요소 제한을 따라야 합니다.The name must follow URI component restrictions defined in RFC3986. 외부 파티에 리소스 이름을 노출 하는 Azure 서비스는 이름 유효성을 검사 하 여 다른 id를 스푸핑 하려고 하지 않았는지 확인 합니다.Azure services that expose the resource name to outside parties validate the name to make sure it isn't an attempt to spoof another identity. 자식 리소스의 경우 이름의 형식은 부모 리소스 내에 중첩 되어 있는지, 부모 리소스 외부에 정의 되는지에 따라 달라 집니다.For a child resource, the format of the name depends on whether it's nested within the parent resource or defined outside of the parent resource. 자식 리소스에 대한 이름 및 형식 설정을 참조하세요.See Set name and type for child resources.
위치location 다름Varies 제공된 리소스의 지역적 위치를 지원합니다.Supported geo-locations of the provided resource. 사용 가능한 위치 중 하나를 선택할 수 있지만 대개는 사용자에게 가까운 하나를 선택하는 것이 좋습니다.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. 일반적으로 동일한 지역에서 서로 상호 작용하도록 리소스를 배치하는 것도 좋습니다.Usually, it also makes sense to place resources that interact with each other in the same region. 대부분의 리소스 종류에는 위치가 필요하지만 일부 종류(예: 역할 할당)에는 위치가 필요하지 않습니다.Most resource types require a location, but some types (such as a role assignment) don't require a location. 리소스 위치 설정을 참조 하세요.See Set resource location.
태그tags 아니요No 리소스와 연결된 태그입니다.Tags that are associated with the resource. 태그를 적용하여 구독에서 리소스를 논리적으로 구성합니다.Apply tags to logically organize resources across your subscription.
설명comments 아니요No 템플릿에서 리소스를 문서화하는 내용에 대한 참고입니다.Your notes for documenting the resources in your template. 자세한 내용은 템플릿의 주석을 참조하세요.For more information, see Comments in templates.
복사copy 아니요No 인스턴스가 둘 이상 필요한 경우 만드는 리소스의 수입니다.If more than one instance is needed, the number of resources to create. 기본 모드는 병렬입니다.The default mode is parallel. 모든 리소스를 동시에 배포하지 않으려면 직렬 모드를 지정합니다.Specify serial mode when you don't want all or the resources to deploy at the same time. 자세한 내용은 Azure Resource Manager에서 리소스의 여러 인스턴스 만들기를 참조하세요.For more information, see Create several instances of resources in Azure Resource Manager.
dependsOndependsOn 아니요No 이 리소스를 배포하기 전에 배포해야 하는 리소스입니다.Resources that must be deployed before this resource is deployed. Resource Manager는 리소스 간의 종속성을 평가한 후 올바른 순서에 따라 리소스를 배포합니다.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. 리소스는 서로 종속되지 않을 경우, 병렬로 배포됩니다.When resources aren't dependent on each other, they're deployed in parallel. 이 값은 리소스 이름 또는 리소스 고유 식별자의 쉼표로 구분된 목록입니다.The value can be a comma-separated list of a resource names or resource unique identifiers. 이 템플릿에 배포된 리소스만 나열합니다.Only list resources that are deployed in this template. 이 템플릿에 정의되지 않은 리소스는 이미 존재해야 합니다.Resources that aren't defined in this template must already exist. 불필요한 종속성은 배포 속도를 느리게 만들고 순환 종속성을 만들기 때문에 추가하지 않습니다.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. 종속성 설정에 대한 지침은 Azure Resource Manager 템플릿에서 종속성 정의를 참조하세요.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
속성properties 아니요No 리소스별 구성 설정입니다.Resource-specific configuration settings. 속성의 값은 리소스를 만들기 위해 REST API 작업(PUT 메서드)에 대한 요청 본문에 제공하는 값과 동일합니다.The values for the properties are the same as the values you provide in the request body for the REST API operation (PUT method) to create the resource. 복사 배열을 지정하여 속성의 여러 인스턴스를 만들 수도 있습니다.You can also specify a copy array to create several instances of a property. 사용 가능한 값을 확인 하려면 템플릿 참조를 참조 하세요.To determine available values, see template reference.
skusku 아니요No 일부 리소스에서는 SKU를 정의하는 값을 허용합니다.Some resources allow values that define the SKU to deploy. 예를 들어 스토리지 계정에 대한 중복 유형을 지정할 수 있습니다.For example, you can specify the type of redundancy for a storage account.
kindkind 아니요No 일부 리소스에서는 배포하는 리소스 종류를 정의하는 값을 허용합니다.Some resources allow a value that defines the type of resource you deploy. 예를 들어 만들 Cosmos DB 종류를 지정할 수 있습니다.For example, you can specify the type of Cosmos DB to create.
계획plan 아니요No 일부 리소스에서는 배포할 계획을 정의하는 값을 허용합니다.Some resources allow values that define the plan to deploy. 예를 들어 가상 머신에 대한 마켓플레이스 이미지를 지정할 수 있습니다.For example, you can specify the marketplace image for a virtual machine.
리소스resources 아니요No 정의 중인 리소스에 종속되는 하위 리소스입니다.Child resources that depend on the resource being defined. 부모 리소스의 스키마에서 허용되는 리소스 유형만 제공합니다.Only provide resource types that are permitted by the schema of the parent resource. 부모 리소스에 대한 종속성은 암시되지 않습니다.Dependency on the parent resource isn't implied. 해당 종속성을 명시적으로 정의해야 합니다.You must explicitly define that dependency. 자식 리소스에 대한 이름 및 형식 설정을 참조하세요.See Set name and type for child resources.

출력Outputs

Outputs 섹션에서, 배포에서 반환되는 값을 지정합니다.In the Outputs section, you specify values that are returned from deployment. 일반적으로 배포 된 리소스에서 값을 반환 합니다.Typically, you return values from resources that were deployed.

다음 예제에서는 출력 정의의 구조를 보여줍니다.The following example shows the structure of an output definition:

"outputs": {
  "<output-name>" : {
    "condition": "<boolean-value-whether-to-output-value>",
    "type" : "<type-of-output-value>",
    "value": "<output-value-expression>"
  }
}
요소 이름Element name 필수Required DescriptionDescription
출력-이름output-name Yes 출력 값의 이름입니다.Name of the output value. 유효한 JavaScript 식별자여야 합니다.Must be a valid JavaScript identifier.
조건condition 아니요No 이 출력 값의 반환 여부를 나타내는 부울 값입니다.Boolean value that indicates whether this output value is returned. true이면 해당 값이 배포의 출력에 포함됩니다.When true, the value is included in the output for the deployment. false이면 이 배포에 대한 출력 값을 건너뜁니다.When false, the output value is skipped for this deployment. 지정하지 않으면 기본값은 true입니다.When not specified, the default value is true.
typetype Yes 출력 값의 유형입니다.Type of the output value. 출력 값은 템플릿 입력 매개 변수와 동일한 유형을 지원합니다.Output values support the same types as template input parameters. 출력 유형에 대해 securestring 을 지정 하는 경우 값은 배포 기록에 표시 되지 않으며 다른 템플릿에서 검색할 수 없습니다.If you specify securestring for the output type, the value isn't displayed in the deployment history and can't be retrieved from another template. 둘 이상의 템플릿에서 비밀 값을 사용 하려면 Key Vault에 비밀을 저장 하 고 매개 변수 파일에서 비밀을 참조 합니다.To use a secret value in more than one template, store the secret in a Key Vault and reference the secret in the parameter file. 자세한 내용은 Azure Key Vault를 사용하여 배포 중에 보안 매개 변수 값 전달을 참조하세요.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue Yes 출력 값으로 계산되어 반환되는 템플릿 언어 식입니다.Template language expression that is evaluated and returned as output value.

출력을 사용 하는 방법에 대 한 예제는 Azure Resource Manager 템플릿의 출력을 참조 하세요.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

주석 및 메타데이터Comments and metadata

템플릿에 주석 및 메타데이터를 추가하는 몇 가지 옵션이 있습니다.You have a few options for adding comments and metadata to your template.

metadata 개체는 템플릿의 거의 모든 위치에 추가할 수 있습니다.You can add a metadata object almost anywhere in your template. Azure Resource Manager는 해당 개체를 무시하지만 JSON 편집기가 해당 속성이 유효하지 않음을 경고할 수 있습니다.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. 개체 내에 필요한 속성을 정의합니다.In the object, define the properties you need.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

매개 변수에 대해 description 속성과 함께 metadata 개체를 추가합니다.For parameters, add a metadata object with a description property.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

포털을 통해 템플릿을 배포하는 경우 설명에 제공하는 텍스트가 자동으로 해당 매개 변수에 대한 팁으로 사용됩니다.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

매개 변수 팁 표시

리소스에 대해 comments 요소 또는 메타데이터 개체를 추가합니다.For resources, add a comments element or a metadata object. 다음 예제에서는 주석 요소와 메타데이터 개체를 모두 보여 줍니다.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "comments": "Storage account used to store VM disks",
    "apiVersion": "2018-07-01",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

outputs의 경우 출력 값에 메타데이터 개체를 추가합니다.For outputs, add a metadata object to the output value.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

사용자 정의 함수에 메타데이터 개체를 추가할 수 없습니다.You can't add a metadata object to user-defined functions.

인라인 주석의 경우 //를 사용할 수 있지만 이 구문은 일부 도구에서 작동하지 않습니다.For inline comments, you can use // but this syntax doesn't work with all tools. Azure CLI를 사용하여 인라인 주석 포함 템플릿을 배포할 수 없습니다.You can't use Azure CLI to deploy the template with inline comments. 또한 포털 템플릿 편집기를 사용하여 인라인 주석 포함 템플릿에 대해 작업할 수 없습니다.And, you can't use the portal template editor to work on templates with inline comments. 이 주석 스타일을 추가하는 경우 사용하는 도구가 반드시 인라인 JSON 주석을 지원해야 합니다.If you add this style of comment, be sure the tools you use support inline JSON comments.

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "apiVersion": "2018-10-01",
  "dependsOn": [ // storage account and network interface must be deployed first
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

VS Code에서 언어 모드를 주석 포함 JSON으로 설정할 수 있습니다.In VS Code, you can set the language mode to JSON with comments. 그러면 인라인 주석이 더 이상 유효하지 않음으로 표시되지 않습니다.The inline comments are no longer marked as invalid. 모드를 변경하려면:To change the mode:

  1. 언어 모드 선택(Ctrl+K M)을 엽니다.Open language mode selection (Ctrl+K M)

  2. 주석 포함 JSON을 선택합니다.Select JSON with Comments.

    언어 모드 선택

다음 단계Next steps