Поделиться через


Зависимости ресурсов в Bicep

При развертывании ресурсов может потребоваться убедиться, что некоторые ресурсы будут развернуты перед другими ресурсами. Например, для развертывания базы данных требуется логический сервер SQL. Такую связь вы можете определить, обозначив один ресурс как зависимый от другого. Порядок развертывания ресурсов определяется двумя способами: неявная зависимость и явная зависимость

Azure Resource Manager оценивает зависимости между ресурсами и развертывает эти ресурсы согласно установленным зависимостям. Если ресурсы не зависят друг от друга, диспетчер ресурсов развертывает их параллельно. Необходимо определить зависимости только для ресурсов, развернутых в одном файле Bicep.

Неявная зависимость

Неявная зависимость создается, когда одно объявление ресурса ссылается на другой ресурс в том же развертывании. В следующем примере otherResource получает свойство из exampleDnsZone. Именованный otherResource ресурс неявно зависит от exampleDnsZone.

resource exampleDnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = {
  name: 'myZone'
  location: 'global'
}

resource otherResource 'Microsoft.Example/examples@2024-05-01' = {
  name: 'exampleResource'
  properties: {
    // get read-only DNS zone property
    nameServers: exampleDnsZone.properties.nameServers
  }
}

Вложенный ресурс также зависит от содержащего его ресурса неявным образом.

resource myParent 'My.Rp/parentType@2024-05-01' = {
  name: 'myParent'
  location: 'West US'

  // implicit dependency on 'myParent'
  resource myChild 'childType' = {
    name: 'myChild'
  }
}

Ресурс, включающий родительское свойство, имеет неявную зависимость от родительского ресурса. Он зависит от родительского ресурса, а не от каких-либо других дочерних ресурсов.

В следующем примере показана учетная запись хранения и файловая служба. Служба файлов имеет неявную зависимость от учетной записи хранения.

resource storage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'examplestorage'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource service 'Microsoft.Storage/storageAccounts/fileServices@2025-06-01' = {
  name: 'default'
  parent: storage
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2025-06-01' = {
  name: 'exampleshare'
  parent: service
}

Если неявная зависимость существует, не добавляйте явную зависимость.

Дополнительные сведения о вложенных ресурсах см. в разделе "Задание имени и типа дочерних ресурсов" в Bicep.

Явная зависимость

Явная зависимость объявляется свойством dependsOn . Свойство принимает массив идентификаторов ресурсов, поэтому можно указать несколько зависимостей. Зависимость вложенных ресурсов можно указать с помощью :: оператора.

В следующем примере показана зона DNS с именем otherZone , которая зависит от зоны DNS с именем dnsZone:

resource dnsZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
  name: 'demoZone1'
  location: 'global'
}

resource otherZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
  name: 'demoZone2'
  location: 'global'
  dependsOn: [
    dnsZone
  ]
}

Если вы решили использовать свойство dependsOn для сопоставления связей между ресурсами, вам важно понимать, зачем вы это делаете. Например, использование свойства dependsOn для документирования связей между ресурсами будет неправильным решением. После развертывания ресурс не будет хранить зависимости развертывания в свойствах, поэтому команд или операций, позволяющих просматривать зависимости, нет. Установка ненужных зависимостей замедляет развертывание, так как диспетчер ресурсов не может развертывать зависимые ресурсы параллельно.

Несмотря на то что иногда требуются явные зависимости, потребность в них возникает редко. В большинстве случаев можно использовать символическое имя для обозначения зависимости между ресурсами. Если вы обнаружите, что вы устанавливаете явные зависимости, следует рассмотреть возможность его удаления.

Визуализация зависимостей

Visual Studio Code предоставляет средство визуализации зависимостей. Откройте файл Bicep в Visual Studio Code и нажмите кнопку визуализатора в левом верхнем углу. На следующем снимке экрана показаны зависимости виртуальной машины.

Снимок экрана визуализатора ресурсов Bicep в Visual Studio Code

Дальнейшие действия

Чтобы ознакомиться с синтаксисом для развертывания ресурса, см. объявление ресурса в Bicep.