如何配置 CloudWatch 订阅筛选条件以调用 Lambda 函数?

1 分钟阅读
0

我想配置 Amazon CloudWatch 订阅筛选条件以调用我的 AWS Lambda 函数。

简短描述

借助 Amazon CloudWatch Logs,您可以使用订阅筛选条件,将日志数据发送到您的 Lambda 函数。CloudWatch Logs 订阅筛选条件采用 base64 编码并使用 GZIP 格式压缩。

在创建 Lambda 函数之前,计算将生成的日志数据量。务必创建可以管理卷数量的函数。如果函数没有足够的卷,日志流将受限制。有关更多信息,请参阅 Lambda 配额

**注意:**流式传输大量 CloudWatch Logs 数据可能会导致高额使用费。最佳实践是使用 AWS Budgets 来跟踪支出和使用情况。有关说明,请参阅如何使用 AWS Budgets 来跟踪我的支出和使用情况?

解决方法

创建 CloudWatch Logs 订阅筛选条件,将日志数据发送到您的 AWS Lambda 函数

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您运行的是最新版本的 AWS CLI

1.    要提供 CloudWatch Logs 权限以调用您的 Lambda 函数,请运行 AWS CLI 命令 add-permission,如下所示:

aws lambda add-permission \
    --function-name "helloworld" \
    --statement-id "helloworld" \
    --principal "logs.amazonaws.com" \
    --action "lambda:InvokeFunction" \
    --source-arn "arn:aws:logs:region:123456789123:log-group:YourLogGroup:*" \
    --source-account "123456789012"

**重要提示:**将“helloworld”替换为您的 Lambda 函数名称,将“YourLogGroup”替换为您的日志组,将示例账户号替换为您的账户。

2.    使用 AWS CLI 命令 put-subscription-filter 创建订阅筛选条件,以发送包含关键字的日志事件。在以下示例中,关键字“ERROR”用于 Lambda 函数:

**重要提示:**将“YourLogGroup”替换为您的日志组,将示例账户号替换为您的账户。

aws logs put-subscription-filter \
    --log-group-name YourLogGroup \
    --filter-name demo \
    --filter-pattern "ERROR" \
    --destination-arn arn:aws:lambda:region:123456789123:function:helloworld

CloudWatch 日志组“YourLogGroup”在收到包含关键字“ERROR”的日志事件(如下所示)时调用 Lambda 函数:

{
  "awslogs": {
    "data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
  }
}

相关信息

筛选条件和模式语法

AWS 官方
AWS 官方已更新 1 年前