terraform/notifications.tf (40 lines of code) (raw):
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
resource "google_monitoring_notification_channel" "email-error-channel" {
display_name = "Email Error Channel"
type = "email"
project = var.project
labels = {
email_address = var.operator_email
}
}
resource "google_monitoring_alert_policy" "alert-intermediate-function" {
display_name = "cloud functions async alert policy"
project = var.project
combiner = "OR"
conditions {
display_name = "Error condition"
condition_matched_log {
filter = "(resource.type=\"cloud_run_revision\" resource.labels.service_name=\"${module.intermediate-function.function_name}\" resource.labels.location = \"${var.region}\" ) AND textPayload:Exception AND severity=\"ERROR\""
}
}
notification_channels = [ google_monitoring_notification_channel.email-error-channel.name ]
alert_strategy {
notification_rate_limit {
period = "300s"
}
}
}