拡張機能リソースの定義
拡張機能リソースは、常に他の Azure リソースにアタッチされます。 これらは、追加の機能でそれらのリソースの動作を拡張します。
一般的な拡張機能リソースの例を次に示します。
名前 | リソースの種類 |
---|---|
ロールの割り当て | Microsoft.Authorization/roleAssignments |
ポリシーの割り当て | Microsoft.Authorization/policyAssignments |
ロック | Microsoft.Authorization/locks |
診断設定 | Microsoft.Insights/diagnosticSettings |
たとえば、Azure リソースを削除したり、変更されたりするのを防止するために使用できるロックについて考えてみましょう。 ロックを単独でデプロイしても意味をなしません。 常に別のリソースにデプロイする必要があります。
注意
このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。
拡張機能リソースはどのように定義されていますか。
Bicep では、通常のリソースを定義するのと同じ方法で、拡張機能リソースをほとんど定義します。 ただし、 scope
プロパティを追加して、Bicep ファイル内の別の場所で定義されている別のリソースにリソースをアタッチする必要があることを Bicep に通知します。 リソースのシンボリック名を使用してリソースに参照します。 たとえば、前に作成した Azure Cosmos DB アカウントの定義を次に示します。
resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
name: cosmosDBAccountName
location: location
properties: {
// ...
}
}
リソース ロックを追加すると、誰も 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.'
}
}
この例では、Azure Cosmos DB アカウントのシンボリック名で scope
プロパティを使用していることに注意してください。 このプロパティ設定は、アカウントを削除できないように、リソース ロックを Azure Cosmos DB アカウントにデプロイするように Bicep に通知します。
拡張機能のリソース ID
拡張リソースの ID は、他のリソースの ID とは若干異なります。 親リソース ID、区切り記号 /providers/
、および拡張リソース ID で構成されます。
前述の Azure Cosmos DB アカウントをデプロイし、そのアカウントに toyrnd
という名前を付けたとします。 ロックのリソース ID は次のようになります。
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
視覚的には次のように表示されます。
通常のリソース ID で始まり、 /providers/
と別のリソースの種類と名前を含むリソース ID が表示された場合は、拡張機能リソース ID が表示されます。