Definiowanie zasobów rozszerzenia

Ukończone

Zasoby rozszerzenia są zawsze dołączane do innych zasobów platformy Azure. Rozszerzają one zachowanie tych zasobów o dodatkowe funkcje.

Oto kilka przykładów typowych zasobów rozszerzeń:

Nazwisko Typ zasobu
Przypisania ról Microsoft.Authorization/roleAssignments
Przypisania zasad Microsoft.Authorization/policyAssignments
Blokady Microsoft.Authorization/locks
Ustawienia diagnostyczne Microsoft.Insights/diagnosticSettings

Rozważmy na przykład blokadę, która może służyć do zapobiegania usunięciu lub modyfikacji zasobu platformy Azure. Nie ma sensu wdrażać blokady samodzielnie. Zawsze należy go wdrożyć w innym zasobie.

Uwaga

Polecenia w tej lekcji są wyświetlane w celu zilustrowania pojęć. Nie uruchamiaj jeszcze poleceń. Będziesz ćwiczyć to, czego nauczysz się tutaj wkrótce.

Jak są zdefiniowane zasoby rozszerzenia?

W Bicep zdefiniujesz zasób rozszerzenia w większości tak samo jak zwykły zasób. Należy jednak dodać scope właściwość , aby poinformować Bicep, że zasób powinien być dołączony do innego zasobu zdefiniowanego gdzie indziej w pliku Bicep. Nazwa symboliczna zasobu służy do odwoływania się do niego. Na przykład poniżej przedstawiono definicję utworzonego wcześniej konta usługi Azure Cosmos DB:

resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
  name: cosmosDBAccountName
  location: location
  properties: {
    // ...
  }
}

Dodajmy blokadę zasobu, która uniemożliwia nikomu usunięcie konta usługi Azure Cosmos DB:

resource lockResource 'Microsoft.Authorization/locks@2016-09-01' = {
  scope: cosmosDBAccount
  name: 'DontDelete'
  properties: {
    level: 'CanNotDelete'
    notes: 'Prevents deletion of the toy data Cosmos DB account.'
  }
}

Zwróć uwagę, że w przykładzie użyto scope właściwości z symboliczną nazwą konta usługi Azure Cosmos DB. To ustawienie właściwości informuje Bicep o wdrożeniu blokady zasobu na koncie usługi Azure Cosmos DB, co oznacza, że nie można go już usunąć.

Identyfikatory zasobów rozszerzenia

Zasób rozszerzenia ma nieco inny identyfikator niż inne zasoby. Składa się z identyfikatora zasobu nadrzędnego, separatora /providers/i identyfikatora zasobu rozszerzenia.

Załóżmy, że wdrożono wcześniej wymienione konto usługi Azure Cosmos DB, a konto miało nazwę toyrnd. Oto, jak wygląda identyfikator zasobu blokady:

/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete

Oto wizualna reprezentacja:

Extension resource ID for a resource lock applied to an Azure Cosmos DB account, split with the key-value pair on a separate line.

Jeśli widzisz identyfikator zasobu, który zaczyna się od normalnego identyfikatora zasobu, a następnie dodaje /providers/ i inny typ zasobu i nazwę, oznacza to, że patrzysz na identyfikator zasobu rozszerzenia.