现在我需要使用 Lambda 以流式传输方式将 Cloudwatch 中的日志导出到 Amazon S3。我在互联网上搜索并编写了一些代码。
import boto3
import calendar
import
def lambda_handler(event, context):
# TODO: create an export task from Cloudwatch logs
# and export the logs into Amazon S3
# create client
client= boto3.client("logs")
# create export task
response= client.create_export_task(
taskName='logs-to-s3-task',
logGroupName='ec2',
fromTime= 123, # begin-time
to=123, # end-time
destination='some-s3',
destinationPrefix='ec2-logs'
)
print("Response of logs-to-s3 lambda function: "+response)
我还在要导出的 Cloudwatch 日志上设置了触发器。但这里有几个问题:
一旦 Cloudwatch 日志发生任何更改,如何确保 S3 上有更新。
lambda 的触发逻辑是什么?顾名思义,它应该像某个事件/更改的监听器一样工作。
如果它作为监听器工作,即在 Cloudwatch 日志发生任何更改时调用,我如何才能仅将新添加的日志更新到 S3 而不是某个时间范围内的所有日志。或者换句话说,如何知道S3中的最新更新,以便我可以将之后的数据导出到S3中。
谢谢!
最佳答案
您的 lambda 函数可以订阅 CloudWatch 日志,它将充当监听器,并且 lambda 函数将在云监视日志事件上触发。
请参阅 AWS 文档中的此示例以供引用 -- http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#LambdaFunctionExample
要仅将新添加的日志更新到 s3 中,您可以将该特定事件作为对象写入 s3 中,并使用 boto3 s3 客户端排序时间戳。
希望这有帮助。
关于python - 有没有办法使用 AWS Lambda 以流式传输方式将 Cloudwatch 日志导出到 Amazon S3? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403973/