Использование оператора сплат в настройке области действия terraform azurerm_monitor_metric_alert - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь настроить azurerm_monitor_metric_alert для моих сервисов приложений, я хотел бы определить одно предупреждение, которое охватывает все мои сервисы приложений, которые создает terraform.

У меня есть два измерения для моих сервисов приложений, которые являются сборкой, одна основана на регионах (максимум два), а другая - на количестве служб приложений, развернутых в каждом плане обслуживания приложений (неизвестное число, два в приведенном ниже примере).

Я надеялся, что смогу сделать что-то вроде:

resource "azurerm_monitor_metric_alert" "disk1" {
  name                = "AppService-diskSpace-Sev1"
  resource_group_name = azurerm_resource_group.location1[0].name
  scopes              = ["${azurerm_app_service.location1.*.id}","${azurerm_app_service.location2.*.id}"]
  description         = "Disk space over 90 percent"
  window_size         = "PT6H"
  frequency           = "PT1H"

  criteria {
    metric_namespace = "Microsoft.Web/sites"
    metric_name      = "FileSystemUsage"
    aggregation      = "Average"
    operator         = "GreaterThan"
    threshold        = 241591910400 # 90% of 250Gb in bytes
  }
  severity         = 1
}

Но я получаю ошибку вроде:

Error: Incorrect attribute value type

  on ..\..\..\infra\terraform\global\web\main.tf line 343, in resource "azurerm_monitor_metric_alert" "disk1":
 343:   scopes              = ["${azurerm_app_service.location1.*.id}","${azurerm_app_service.location2.*.id}"]
    |----------------
    | azurerm_app_service.location is tuple with 2 elements
    | azurerm_app_service.location2 is tuple with 2 elements

Inappropriate value for attribute "scopes": element 0: string required.

Я пробовал несколько различных опций, но все выдают ошибки, do c говорит

"Набор строк идентификаторов ресурсов, к которым должны применяться критерии metri c"

, но я не уверен, что такое "набор строк" означает в этом контексте.

- РЕДАКТИРОВАТЬ После комментариев ниже я попробовал то, что, как я надеялся, предлагалось, но я все еще получаю ошибки:

concat(azurerm_app_service.location.*.id)

возвращает

Error: scopes: attribute supports 1 item maximum, config has 2 declared. 
["${azurerm_app_service.location.*.id}"]

возврат

Inappropriate value for attribute "scopes": element 0: string required.
"${azurerm_app_service.web.*.id}"

возврат

Error: scopes: attribute supports 1 item maximum, config has 2 declare
...