アプリ サービスの azurerm_monitor_metric_alert をセットアップしようとしています。terraform が構築しているすべてのアプリ サービスをカバーする 1 つのアラートを定義したいと考えています。
ビルドするアプリ サービスには 2 つのディメンションがあります。1 つはリージョンに基づいており (最大 2 つ)、もう 1 つは各アプリ サービス プランにデプロイされているアプリ サービスの数に基づいています (不明な数、以下の例では 2 つ)。
私は次のようなことができると思っていました:
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.
さまざまなオプションをいくつか試しましたが、すべてエラーが発生します、とドキュメントは言います
「メトリック基準を適用するリソース ID の文字列のセット」
しかし、このコンテキストで「文字列のセット」が何を意味するのかわかりません。
--編集以下のコメントの後、提案されていることを望んでいたことを試しましたが、まだエラーが発生しています:
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