参考现有资源

Bicep 允许使用现有关键字 (keyword)按其唯一名称引用现有资源。 最初在 Bicep 文件部署外部创建的应用程序或组(如应用程序或组)不太可能设置其唯一名称属性。 本文介绍如何回填这些资源的唯一名称属性,以便可以在 Bicep 文件中重新部署或引用它们。

重要

Microsoft Graph Bicep 目前以预览版提供。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

先决条件

  • 确保拥有更新现有资源或资源所有者的最低特权或角色。 按任务默认用户权限查阅最低特权角色,以查看需要分配的角色。
  • 安装 Azure CLI 或 Azure PowerShell。

回填唯一名称

以下示例演示如何使用以下 Azure CLI 或 Azure PowerShell 回填组和应用程序的唯一名称(假设已登录)。

az rest --method patch --url 'https://graph.microsoft.com/v1.0/groups/<replace-with-ID-of-your-group>' --body '{\"uniqueName\": \"TestGroup-2024-05-10\"}' --headers "content-type=application/json"
az rest --method patch --url 'https://graph.microsoft.com/v1.0/applications/<replace-with-ID-of-your-application>' --body '{\"uniqueName\": \"TestApp-2024-05-10\"}' --headers "content-type=application/json"

在 Bicep 中使用现有资源

  1. 启动 Visual Studio Code 并创建两个新文件 main.bicep bicepconfig.json,确保它们位于同一文件夹中。

  2. 通过配置bicepconfig.json启用某些预览功能:

  {
      "experimentalFeaturesEnabled": {
      "extensibility": true
      }
  }
  1. main.bicep 中,添加以下 Bicep 代码,该代码使用existing关键字 (keyword)按其唯一名称和TestGroup-2024-05-10应用程序引用TestApp-2024-05-10组:
  provider microsoftGraph

  @description('Group to use')
  param groupName string = 'TestGroup-2024-05-10'

  @description('App to use')
  param appName string = 'TestApp-2024-05-10'

  resource group 'Microsoft.Graph/groups@v1.0' existing = {
      uniqueName: groupName
  }

  resource application 'Microsoft.Graph/applications@v1.0' existing = {
      uniqueName: appName
  }

  output groupId string = group.id
  output applicationId string = application.id
  1. 使用 Azure CLI 或 Azure PowerShell 部署 Bicep 文件
  az deployment group create --resource-group exampleRG --template-file main.bicep
  DeploymentName          : main
  ResourceGroupName       : exampleRG
  ProvisioningState       : Succeeded
  Timestamp               : 18/04/2024 16:16:42
  Mode                    : Incremental
  TemplateLink            :
  Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          groupName        String                     "TestGroup-2024-05-10"
                          appName          String                     "TestApp-2024-05-10"


  Outputs                 :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          group-id         String                     "<ID-of-your-group>"
                          app-id           String                     "<ID-of-your-app>"