Использование Terraform для настройки служб Azure Media Services: в частности, политика ключей содержимого с помощью Widervine DRM

#azure #terraform #azure-media-services

#azure #terraform #azure-media-services

Вопрос:

Я пытаюсь использовать Terraform для настройки Azure Media Services и могу получить основную основную работу, например, группу ресурсов, учетную запись хранилища и т. Д., Но не могу найти никакой документации или примеров создания политики ключей содержимого с помощью DRM (Widervine) и токена JWT, мне также нужно будет добавить этот json для лицензиинастройки:

 {
  "allowed_track_types": "SD_HD",
  "content_key_specs": [
    {
      "track_type": "SD",
      "security_level": 1,
      "required_output_protection": {
        "hdcp": "HDCP_NONE",
        "cgms_flags": null
      }
    }
  ],
  "policy_overrides": {
    "can_play": true,
    "can_persist": true,
    "can_renew": false,
    "rental_duration_seconds": 2592000,
    "playback_duration_seconds": 10800,
    "license_duration_seconds": 604800
  }
}
  

Текущий main.tf файл:

 terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.26"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  name     = join("", [ var.prefix, "mediaservices" ])
  location = var.location
}

resource "azurerm_storage_account" "sa" {
  name                     = join("", [ var.prefix, "storageaccount" ])
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_tier             = "Standard"
  account_replication_type = "LRS"

  tags = {
    environment = "staging"
  }
}

resource "azurerm_storage_container" "sc1" {
  name                  = "archive"
  storage_account_name  = azurerm_storage_account.sa.name
  container_access_type = "private"
}

resource "azurerm_storage_container" "sc2" {
  name                  = "tobeprocessed"
  storage_account_name  = azurerm_storage_account.sa.name
  container_access_type = "private"
}

resource "azurerm_media_services_account" "ams" {
  name                = join("", [ var.prefix, "mediaservices" ])
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  storage_account {
    id         = azurerm_storage_account.sa.id
    is_primary = true
  }
}

output "resourceGroupName" {
  value = azurerm_resource_group.rg.name
}

output "containerConnectionString" {
  value = azurerm_storage_account.sa.primary_connection_string
}

data "azurerm_subscriptions" "available" {
}

output "subscriptionId" {
  value = data.azurerm_subscriptions.available.subscriptions[ 0 ].subscription_id
}
  

Ответ №1:

Документацию по лицензиям Widevine можно найти здесь: Media Services v3 с обзором шаблона лицензии Widevine и здесь вместе с другой информацией о защите содержимого.