我正在测试一个 cloudwatch 警报过滤器(精确检查 lambda 是否在内存中达到最大值)发送到 SNS,然后发送到 SQS 队列。但是,我没有看到过滤器出现在日志中。设置是cloudwatch (filtered alarm) -> SNS -> SQS ->splunk
到目前为止我所拥有的:
resource "aws_cloudwatch_metric_alarm" "general_lambda_error" {
depends_on = [
"aws_cloudwatch_log_metric_filter.max_memory_time_out",
]
alarm_name = "general_lambda_error"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "1"
metric_name = "Errors"
namespace = "AWS/Lambda"
period = "60"
statistic = "SampleCount"
threshold = "2"
alarm_description = "This metric monitors Lambda Memory Max Usage and other Errors: threshold=2"
alarm_actions = [ "some-arn" ]
dimensions {
FunctionName = "lambda-test"
Resource = "lambda-test"
}
}
resource "aws_cloudwatch_log_metric_filter" "max_memory_time_out" {
name = "max_memory_time_out"
pattern = "[report_name=\"REPORT\",
request_id_name=\"RequestId:\", request_id_value, duration_name=\"Duration:\", duration_value, duration_unit=\"ms\", billed_duration_name_1=\"Billed\", bill_duration_name_2=\"Duration:\", billed_duration_value, billed_duration_unit=\"ms\", memory_size_name_1=\"Memory\", memory_size_name_2=\"Size:\", memory_size_value, memory_size_unit=\"MB\", max_memory_used_name_1=\"Max\", max_memory_used_name_2=\"Memory\", max_memory_used_name_3=\"Used:\", max_memory_used_value, max_memory_used_unit=\"MB\"]"
log_group_name = "/aws/lambda/lambda-test"
metric_transformation {
name = "SampleCount"
namespace = "cloudwatch_filter"
value = "1"
}
}
如何发送过滤后的消息?我发现这个链接描述了类似的问题,但解决方案是创建一个 lambda 函数。我可以在不创建 lambda 函数的情况下做到这一点吗?