拡張機能リソースの定義

完了

拡張機能リソースは、常に他の 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

視覚的には次のように表示されます。

Azure Cosmos DB アカウントに適用されるリソース ロックの拡張リソース ID。キーと値のペアは別々の行に分割されます。

通常のリソース ID で始まり、/providers/ と別のリソースの種類と名前が追加されたリソース ID が表示されている場合は、拡張機能リソース ID が表示されていることを意味します。