Bicep의 리소스 선언

이 문서에서는 Bicep 파일에 리소스를 추가하는 데 사용하는 구문을 설명합니다. Bicep 파일의 리소스는 800개로 제한됩니다. 자세한 내용은 템플릿 제한을 참조하세요.

선언

resource 키워드를 사용하여 리소스 선언을 추가합니다. 리소스에 대한 기호화된 이름을 설정합니다. 기호화된 이름이 리소스 이름과 동일하지 않습니다. 심볼 이름을 사용하여 Bicep 파일의 다른 부분에 있는 리소스를 참조할 수 있습니다.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

따라서 스토리지 계정의 선언은 다음으로 시작할 수 있습니다.

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  ...
}

기호 이름은 대/소문자를 구분합니다. 문자, 숫자, 밑줄(_)만 포함할 수 있습니다. 숫자로 시작할 수 없습니다. 리소스는 매개 변수, 변수 또는 모듈과 동일한 이름을 가질 수 없습니다.

사용 가능한 리소스 종류 및 버전은 Bicep 리소스 참조를 참조하세요. Bicep은 ARM 템플릿(Azure Resource Manager 템플릿) JSON에서 사용할 수 있는 apiProfile을 지원하지 않습니다. Bicep 확장성 공급자 리소스를 정의할 수도 있습니다. 자세한 내용은 Bicep 확장성 Kubernetes 공급자를 참조하세요.

리소스를 조건부로 배포하려면 if 구문을 사용합니다. 자세한 내용은 Bicep의 조건부 배포를 참조하세요.

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

두 개 이상의 리소스 인스턴스를 배포하려면 for 구문을 사용합니다. batchSize 데코레이터를 사용하여 인스턴스를 직렬로 또는 병렬로 배포할지 여부를 지정할 수 있습니다. 자세한 내용은 Bicep의 반복 루프를 참조하세요.

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

리소스 속성의 for 구문을 사용하여 배열을 만들 수도 있습니다.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

리소스 이름

각 리소스는 하나의 이름을 갖습니다. 리소스 이름을 설정할 때, 리소스 이름에 대한 규칙 및 제한 사항에 주의하십시오.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  ...
}

일반적으로 배포 중에 다른 값을 전달할 수 있도록 이름을 매개 변수로 설정하게 됩니다.

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageAccountName
  ...
}

위치

많은 리소스에는 위치가 필요합니다. 리소스에 intellisense 또는 템플릿 참조를 통해 위치가 필요한지 여부를 판단할 수 있습니다. 다음 예제에서는 스토리지 계정에 사용되는 위치 매개 변수를 추가합니다.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

일반적으로 위치를 다른 위치에 배포할 수 있도록 매개 변수로 설정하게 됩니다.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: location
  ...
}

다양한 리소스 형식이 다양한 위치에서 지원됩니다. Azure 서비스에 대해 지원되는 위치를 가져오려면 지역별 사용 가능 제품을 참조하세요. 리소스 종류에 대해 지원되는 위치를 가져오려면 Azure PowerShell 또는 Azure CLI를 사용합니다.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

태그

배포 중 리소스에 태그를 적용할 수 있습니다. 태그를 통해 배포된 리소스를 논리적으로 구성할 수 있습니다. 태그를 지정할 수 있는 다양한 방법의 예는 ARM 템플릿 태그를 참조하세요.

Azure 리소스에 대한 관리 ID

일부 리소스는 Azure 리소스에 대한 관리 ID를 지원합니다. 이러한 리소스에는 리소스 선언의 루트 수준에 ID 개체가 있습니다.

시스템 할당 또는 사용자 할당 ID를 사용할 수 있습니다.

다음 예제에서는 Azure Kubernetes Service 클러스터에 대해 시스템 할당 ID를 구성하는 방법을 보여 줍니다.

resource aks 'Microsoft.ContainerService/managedClusters@2020-09-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

다음 예제에서는 가상 머신에 대한 사용자 할당 ID를 구성하는 방법을 보여 줍니다.

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

리소스별 속성

위의 속성은 대부분의 리소스 형식에 대해 일반적입니다. 이러한 값을 설정한 후에는 배포하고 있는 리소스 유형과 관련된 속성을 설정해야 합니다.

Intellisense 또는 Bicep 리소스 참조를 사용하여 사용 가능한 속성과 필요한 속성을 결정합니다. 다음 예제에서는 스토리지 계정에 나머지 속성을 설정합니다.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

다음 단계