拡張機能リソースの定義

完了

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

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

Azure Cosmos DB アカウントに適用されるリソース ロックの拡張機能リソース ID を示す図。ID の各要素は、個別の行に表示されます。

通常のリソース ID で始まり、 /providers/ と別のリソースの種類と名前を含むリソース ID が表示された場合は、拡張機能リソース ID が表示されます。