in util/awsservice/cloudwatchmetrics.go [137:184]
func CheckMetricAboveZero(
metricName string,
namespace string,
startTime time.Time,
endTime time.Time,
periodInSeconds int32,
) (bool, error) {
metrics, err := CwmClient.ListMetrics(ctx, &cloudwatch.ListMetricsInput{
MetricName: aws.String(metricName),
Namespace: aws.String(namespace),
RecentlyActive: "PT3H",
})
if err != nil {
return false, err
}
if len(metrics.Metrics) == 0 {
return false, fmt.Errorf("no metrics found for %s", metricName)
}
for _, metric := range metrics.Metrics {
data, err := GetMetricStatistics(
metricName,
namespace,
metric.Dimensions,
startTime,
endTime,
periodInSeconds,
[]types.Statistic{types.StatisticMaximum},
nil,
)
if err != nil {
log.Printf("Error getting statistics for metric with dimensions %v: %v", metric.Dimensions, err)
continue
}
for _, datapoint := range data.Datapoints {
if *datapoint.Maximum > 0 {
log.Printf("Found value above zero")
return true, nil
}
}
}
return false, nil
}