拡張機能リソースの定義
拡張機能リソースは、常に他の Azure リソースにアタッチされます。 これらは、追加の機能でそれらのリソースの動作を拡張します。
一般的な拡張機能リソースの例を次に示します。
名前 | リソースの種類 |
---|---|
ロールの割り当て | Microsoft.Authorization/roleAssignments |
ポリシーの割り当て | Microsoft.Authorization/policyAssignments |
Locks | 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、区切り記号 /providers/
、および拡張リソース ID で構成されます。
前述の Azure Cosmos DB アカウントをデプロイし、アカウントに toyrnd
という名前を付けたとします。 ロックのリソース ID は次のようになります。
/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
視覚的には次のように表示されます。
通常のリソース ID で始まり、/providers/
と別のリソースの種類と名前が追加されたリソース ID が表示されている場合は、拡張機能リソース ID が表示されていることを意味します。