使用版本 2 而不是版本 3 的 Terraform 媒体服务

Terraform media services using Version 2 instead of version 3

我研究了文档,发现 terraform 支持 media services 部署,我想知道如何使用版本 2 而不是默认版本 2 部署:

你能建议我在使用 Terraform 部署时如何使用特定版本吗?

我尝试手动创建两个媒体服务并找到 API 使用但不是运气,因为我找不到任何相关信息:

如果导出的模板> 这是关于版本 2 和版本 3 相同的示例

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "mediaservices_testversion2_name": {
            "defaultValue": "testversion2",
            "type": "String"
        },
        "storageAccounts_sinclairdevamsstracc_externalid": {
            "defaultValue": "//////////////////",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Media/mediaservices",
            "apiVersion": "2015-10-01",
            "name": "[parameters('/////////////')]",
            "location": "West US 2",
            "properties": {
                "storageAccounts": [
                    {
                        "id": "[parameters('storageAccounts_//////////_externalid')]",
                        "isPrimary": true
                    }
                ]
            }
        }
    ]
}

我使用的代码很简单:

#Azure Provider Configuration
terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "2.82.0"
    }
  }
}

provider "azurerm" {
  subscription_id = var.subscription_id
  tenant_id = var.tenant_id
  client_id = var.client_id
  features {}
  }

locals {
      StreamingEndpoints = 1
}


#Storage Account Resource
resource "azurerm_storage_account" "stracc" {
  name                = "${lower(var.customer)}${lower(var.env)}${lower(var.product)}stracc"
  resource_group_name = azurerm_resource_group.rg.name

  location                 = var.location
  account_tier             = "Standard"
  account_replication_type = "LRS"


}

#Resource Group
resource "azurerm_resource_group" "rg" {
  name = upper("${var.customer}-${var.product}-RG-${var.env}-TEST")
  location = var.location


}

resource "azurerm_media_services_account" "media" {
  name                = "${lower(var.customer)}${lower(var.env)}${lower(var.product)}-media"
  location            = var.location
  resource_group_name = azurerm_resource_group.rg.name

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

}
resource "azurerm_media_streaming_endpoint" "example" {
  count = local.StreamingEndpoints
  name                        = "${lower(var.customer)}${lower(var.env)}${lower(var.product)}-CH0${count.index + 1}"
  resource_group_name         = azurerm_resource_group.rg.name
  location                    = var.location
  media_services_account_name = azurerm_media_services_account.media.name
  scale_units                 = 1
  access_control {
    ip_allow {
      name    = "AllowedIP"
      address = "192.168.1.1"
    }
  }
}

我也使用 TerraformARM template 对此进行了测试,但是 Enable the Classic API's 选项没有参数,就像从 Portal 中看到的那样。

它被限制为从 Portal 本身部署,因为 Media Service API v2 已被弃用。

因此,如果您想使用 Media Service V2 直到其完全弃用,即 29 February 2024 那么作为解决方案请从门户部署它。