我需要从云观看日志中删除日志并将其加载到s3,并从s3加载到数据仓库
问题描述:
我有几个lambda函数。我需要从我的所有lambda函数中生成日志并加载到我们的内部数据仓库中。我想到了这些解决方案。我需要从云观看日志中删除日志并将其加载到s3,并从s3加载到数据仓库
-
已将lambda函数订阅到我的lambda函数的cloudwatch日志组,并抛光并记录消息并将其推送到s3。
- 优点:工作和实施起来很简单。
- 缺点:我没有办法让 “重放”。说我的出口商出于某种原因失败。我不能 重播此动作。
-
有一个每10分钟左右运行一次的lambda函数并创建导出任务并从cloudwatch中删除日志并将它们加载到s3。
import boto3 client = boto3.client('logs') response = client.create_export_task( taskName='export_task', logGroupName='/aws/lambda/<lambda_function_1>', fromTime=from_time, to=to_time, destination='<application_logs>', destinationPrefix='<lambda_function_1>' ) response = client.create_export_task( taskName='export_task', logGroupName='/aws/lambda/<lambda_function_2>', fromTime=from_time, to=to_time, destination='<application_logs>', destinationPrefix='<lambda_function_2>'
)
二create_export_task这里
An error occurred (LimitExceededException) when calling the CreateExportTask operation: Resource limit exceeded."
失败,我不能创建多个导出任务。有没有办法解决这个问题?
答
您创建(创建)了多少个日志组?有一个限制,我认为是每个帐户5000个日志组。此错误表示:“由于”LimitExceededException“,Lambda无法创建日志组。
在CloudWatch中查找以”/ aws/lambda /“开头的名称,我将使用CLI列出日志组和然后像“WC”一个程序来计算数量。
您可以联系亚马逊的支持,以增加此限制。
答
遇到了同样的错误消息,原因是你只能有一个在给定时间运行/暂挂导出任务,因此此任务失败。从AWS文档:One active (running or pending) export task at a time, per account. This limit cannot be changed.
https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html
so Aws为每个lambda函数创建一个日志组。我没有创建日志组的问题。我有创建导出任务的问题。 –
我认为你需要在调用第二个create_export_task之前添加一个延迟。 –
是啊..但寻找更优雅的解决方案。 –