如何让 lambda 监听多个 cloudwatch 日志组?
Posted
技术标签:
【中文标题】如何让 lambda 监听多个 cloudwatch 日志组?【英文标题】:How to make a lambda listen on multiple log groups of cloudwatch? 【发布时间】:2021-01-06 17:42:16 【问题描述】:我有一个处理来自 cloudwatch 日志组的日志的 lambda。它将日志保存到 Elasticsearch 集群。我正在使用无服务器配置日志组流式传输到 lambda:https://www.serverless.com/framework/docs/providers/aws/events/cloudwatch-log/。
但是,它只支持监听一个日志组。如何让我的 lambda 监听多个日志组?我想使用如下模式:
functions:
myCloudWatchLog:
handler: myCloudWatchLog.handler
events:
- cloudwatchLog: '/aws/lambda/hello*'
在上面的示例中,我希望每当有日志发送到名称以/aws/lambda/hello
开头的日志组时触发我的 lambda。这样,它会将所有日志保存到 Elasticsearch 中进行分析。
我无法在日志组上添加通配符,如果我添加*
会出现此错误
An error occurred (InvalidParameterException) when calling the PutSubscriptionFilter operation: 1 validation error detected: Value '/aws/lambda/hello*' at 'logGroupName' failed to satisfy constraint: Member must satisfy regular expression pattern: [\.\-_/#A-Za-z0-9]+
【问题讨论】:
我希望我能正确理解这个问题。让你试试日志订阅过滤器。 docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… 过滤器只在一个日志组内起作用。我无法按日志组名称过滤。 不确定是否可以使用通配符模式,但您应该能够在events
下添加多个- cloudwatchLog: '/aws/lambda/hello'
条目。
此处不允许使用通配符。
【参考方案1】:
您可以添加多个cloudwatchLog
事件
myCloudWatchLog:
handler: myCloudWatchLog.handler
events:
- cloudwatchLog: '/aws/lambda/hello1'
- cloudwatchLog: '/aws/lambda/hello2'
如果你想为每个日志组赋予不同的过滤模式,你可以使用:
myCloudWatchLog:
handler: myCloudWatchLog.handler
events:
- cloudwatchLog:
logGroup: '/aws/lambda/hello1'
filter: 'filter1'
- cloudwatchLog:
logGroup: '/aws/lambda/hello2'
filter: 'filter2'
【讨论】:
以上是关于如何让 lambda 监听多个 cloudwatch 日志组?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用lambda表达式/缩短onclicklisteners android studio
理解 python 中的 lambda 并使用它来传递多个参数
如何从 MaterialButton.addOnCheckedChangeListener "as a lambda" 获取监听器