Definiowanie zasobów rozszerzenia
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@2024-05-15' = {
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@2020-05-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/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
Oto wizualna reprezentacja:
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.