I am trying to create an alarm for aws transfer family sever's BytesIn metric. If I click on the alarm button near the metric's name:
I am led to the alarm creation page where the namespace, metric name and server id are already specified. However, when I try to create an alarm via terraform, I don't see any argument where I can specify the serverId. So how can I link a particular server to this alarm?
resource "aws_cloudwatch_metric_alarm" "foobar" {
alarm_name = "test-alarm"
comparison_operator = "LessThanOrEqualToThreshold"
evaluation_periods = "2"
metric_name = "BytesIn"
namespace = "AWS/Transfer"
period = "3600"
statistic = "Sum"
threshold = "0"
alarm_description = "This metric monitors ftp connection"
insufficient_data_actions = []
}
Based on the AWS documentation for monitoring the Transfer family [1], the ServerId
field is what is called a dimension. Since there are no examples for the Transfer family in the Terraform documentation, it might be a bit harder to understand what needs to be done, but there are other examples with dimensions
, e.g., for an NLB [2]:
dimensions = {
TargetGroup = aws_lb_target_group.lb-tg.arn_suffix
LoadBalancer = aws_lb.lb.arn_suffix
}
Since you have provided most of the requirements, the only thing that is missing is the dimensions
block:
resource "aws_cloudwatch_metric_alarm" "foobar" {
alarm_name = "test-alarm"
comparison_operator = "LessThanOrEqualToThreshold"
evaluation_periods = "2"
metric_name = "BytesIn"
namespace = "AWS/Transfer"
period = "3600"
statistic = "Sum"
threshold = "0"
alarm_description = "This metric monitors ftp connection"
insufficient_data_actions = []
dimensions = {
ServerId = "<some server id>"
}
}
Since you know the value for the ServerId
it should not be an issue to add it.
[1] https://docs.aws.amazon.com/transfer/latest/userguide/monitoring.html#metrics