diff --git a/alarms.tf b/alarms.tf
new file mode 100644
index 0000000000000000000000000000000000000000..b236cde022ad49673114714a14c4cb1a491370ed
--- /dev/null
+++ b/alarms.tf
@@ -0,0 +1,41 @@
+resource "aws_cloudwatch_metric_alarm" "invocations" {
+  count                     = length(local.function_names)
+  alarm_actions             = [local.topic_arn]
+  actions_enabled           = true
+  alarm_name                = "Invocations alarm for ${local.function_names[count.index]}."
+  comparison_operator       = "LessThanThreshold"
+  evaluation_periods        = "1"
+  insufficient_data_actions = [local.topic_arn]
+  metric_name               = "Invocations"
+  namespace                 = "AWS/Lambda"
+  ok_actions                = [local.topic_arn]
+  period                    = (var.rate + 1) * 60
+  statistic                 = "Sum"
+  tags                      = local.common_tags
+  threshold                 = 1
+
+  dimensions = {
+    FunctionName = local.function_names[count.index]
+  }
+}
+
+resource "aws_cloudwatch_metric_alarm" "errors" {
+  count                     = length(local.function_names)
+  alarm_actions             = [local.topic_arn]
+  actions_enabled           = true
+  alarm_name                = "Errors alarm for ${local.function_names[count.index]}."
+  comparison_operator       = "GreaterThanThreshold"
+  evaluation_periods        = "1"
+  insufficient_data_actions = [local.topic_arn]
+  metric_name               = "Errors"
+  namespace                 = "AWS/Lambda"
+  ok_actions                = [local.topic_arn]
+  period                    = (var.rate + 1) * 60
+  statistic                 = "Sum"
+  tags                      = local.common_tags
+  threshold                 = 0
+
+  dimensions = {
+    FunctionName = local.function_names[count.index]
+  }
+}