【问题标题】:Azure / Terraform - azurerm_monitor_autoscale_setting with storage queuesAzure / Terraform - 带有存储队列的 azurerm_monitor_autoscale_setting
【发布时间】:2020-08-10 19:45:48
【问题描述】:

当队列中的消息数量大于某个值时,我想创建一个规则来扩展应用服务计划。

队列定义如下所示:

resource "azurerm_storage_queue" "myqueue" {
  name                 = "myqueue"
  storage_account_name = "storageaccountname"
}

缩放规则如下所示:

    rule {
      metric_trigger {
        metric_name        = "ApproximateMessageCount"
        metric_resource_id = azurerm_storage_queue.myqueue.id
        time_grain         = "PT1M"
        statistic          = "Average"
        time_window        = "PT1M"
        time_aggregation   = "Average"
        operator           = "GreaterThanOrEqual"
        threshold          = 100
      }

      scale_action {
        direction = "Increase"
        type      = "ChangeCount"
        value     = "1"
        cooldown  = "PT10M"
      }
    }

问题出在metric_resource_id - 我不确定它所期望的确切属性或 ID。错误消息是The number of path segments is not divisible by 2。我相信这是因为队列的 id 只是它的名称,而 resource_id 应该类似于 /subscriptions/xxxxxxx/resourceGroups/xxxxxx/providers/Microsoft.Storage/storageAccounts/storageaccountname/services/queue/queues/myqueue" 但我不知道如何从 terraform 获取它。

【问题讨论】:

    标签: azure terraform terraform-provider-azure azure-storage-queues


    【解决方案1】:

    azurerm_storage_queue.myqueue.id的输出是一个Url格式https://storageaccountname.queue.core.windows.net/mysamplequeue

    metric_resource_id 要求发出指标的资源的资源 ID。据我所知,我们无法直接从 Terraform 资源属性中获取资源格式,但我们可以自构建资源 id 到

    metric_resource_id = join("/",["${azurerm_storage_account.example.id}","services/queue/queues","mysamplequeue"])
    

    例如,

    rule {
      metric_trigger {
        metric_name        = "ApproximateMessageCount"
        metric_resource_id = join("/",["${azurerm_storage_account.example.id}","services/queue/queues","myqueue"])
        time_grain         = "PT1M"
        statistic          = "Average"
        time_window        = "PT5M"
        time_aggregation   = "Average"
        operator           = "GreaterThanOrEqual"
        threshold          = 100
      }
    

    【讨论】:

    • 实际上看起来我可以使用队列的名称。我能够使用这个"${azurerm_storage_account.example.id}/services/queue/queues/${azurerm_storage_queue.myqueue.name}"
    猜你喜欢
    • 2020-10-03
    • 2023-01-14
    • 1970-01-01
    • 2020-10-15
    • 2022-10-08
    • 1970-01-01
    • 2021-10-30
    • 2014-01-28
    • 2019-08-17
    相关资源
    最近更新 更多