快速入门:使用 Bicep 部署 Azure AI 视频索引器 (VI)

使用本快速入门,可以使用 Bicep 创建 Azure AI 视频索引器(VI)帐户

使用以下 Bicep 模板安装资源:

  • Azure 存储帐户。 VI 的存储帐户必须是标准常规用途 v2 存储帐户
  • 使用系统分配的托管标识连接到存储帐户的 VI 帐户
  • 存储帐户中 VI 帐户的存储 Blob 数据参与者角色分配

先决条件

  • 有权创建资源的 Azure 订阅。
  • 最新版本的 Azure CLI
  • 建议:Bicep 工具。

查阅 Bicep 文件

可以在官方 Azure AI 视频索引器示例中找到本快速入门随附的代码。

该文件 main.bicep 协调两个模块的安装:

  • 使用其依赖Azure 存储帐户资源部署 VI 帐户的 VI 模块。
  • 授予 VI 标识对存储帐户Azure Blob 存储数据所有者权限的角色权限模块。

注意

最好将 Azure 资源分隔到多个 Bicep 模块。 若要全面了解 Bicep 模块的工作原理,请参阅 Bicep 模块 - Azure 资源管理器

创建 Bicep 文件

  1. 将以下内容复制并粘贴到工作目录中名为 main.bicep 的文件。

    param location string = resourceGroup().location 
    @description('Storage Account Name') 
    param storageAccountName string = “<add_your_storage_account_name” 
    @description('Video Indexer Account Name') 
    param videoIndexerAccountName string = = “<add_your_videoindexer_account_name>” 
    
    module videoIndexer 'videoIndexer.bicep' = { 
      name: 'videoIndexer.bicep' 
      params: { 
        location: location 
        storageAccountName: storageAccountName 
        videoIndexerAccountName: videoIndexerAccountName 
      } 
    } 
    
    // Role Assignment must be on a separate resource  
    
    module roleAssignment 'role-assignment.bicep' = { 
      name: 'grant-storage-blob-data-contributor' 
      params: { 
        servicePrincipalObjectId: videoIndexer.outputs.servicePrincipalId 
        storageAccountName: storageAccountName 
      } 
      dependsOn: [ 
        videoIndexer 
      ] 
    } 
    
    
  2. main.bicep通过填写缺少的参数编辑文件:

    • storageAccountName - 要连接到 Azure AI 视频索引器帐户的存储帐户的名称
    • videoIndexerAccountName - VI 帐户名称

创建视频 AI 索引器 Bicep 模块

将以下内容复制并粘贴到工作目录中名为 videoindexer.bicep 的文件。 该文件将部署存储帐户以及具有系统分配标识的 VI 帐户。


param location string = resourceGroup().location 
@description('Storage Account Name') 
param storageAccountName string 
@description('Video Indexer Account Name') 
param videoIndexerAccountName string 
@description('Storage Account Kind') 
var storageKind = 'StorageV2' 
@description('Storage Account Sku') 
var storageSku = 'Standard_LRS' 
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = { 
  name: storageAccountName 
  location: location 
  kind: storageKind 
  properties: { 
    minimumTlsVersion: 'TLS1_2' 
  } 
  sku: { 
    name: storageSku 
  }
} 

resource videoIndexer 'Microsoft.VideoIndexer/accounts@2024-01-01' = { 
  name: videoIndexerAccountName 
  location: location 
  identity: { 
    type: 'SystemAssigned' 
  } 

  properties: { 
    storageServices: { 
      resourceId: storageAccount.id 
    } 
  } 
} 

output storageAccountName string = storageAccount.name 
output accountName string = videoIndexer.name 
output servicePrincipalId string = videoIndexer.identity.principalId 

创建角色分配 Bicep 模块

将以下内容复制并粘贴到工作目录中名为 role-assignment.bicep 的文件。 该模块授予系统分配的标识在 VI 帐户的存储帐户上存储 Blob 数据参与者的角色。


@secure() 
param servicePrincipalObjectId string 
param storageAccountName string
@description('Storage Blob Data Contributor Role Id') 
var storageBlobDataContributorRoleId = 'ba92f5b4-2d11-453d-a403-e96b0029c9fe' 
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-04-01' existing= { 
  name: storageAccountName 
} 

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { 
  name: guid(storageAccount.id, servicePrincipalObjectId, 'Storage Blob Data Contributor')  
  scope: storageAccount  
  properties: { 
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', storageBlobDataContributorRoleId)  
    principalId: servicePrincipalObjectId 
    principalType: 'ServicePrincipal'
  }
} 

部署 Bicep 文件

  1. 打开终端,确保登录到 Azure 订阅。

    az login

    az account set --subscription <your-subscription-name>

  2. 创建资源组。

    az group create -n <your-resource-group-name> -l eastus

  3. 将模板部署到资源组。

    az deployment group create --resource-group <your-resource-group-name> --template-file .\main.template.json

  4. 等待部署完成并检查在Azure 门户上创建的资源。

如果你还不熟悉 Azure AI 视频索引器,请参阅:

如果你不熟悉 Bicep 部署,请参阅: