【发布时间】:2023-01-07 04:38:33
【问题描述】:
我想从 AWS 下载所有 CloudWatch 日志用于:
- 一个特定的日志组
- 特定时间范围
我的计划很简单:
- 遍历日志组的所有日志流。
- 对于每个日志流,迭代事件并构建所有日志事件的列表。
import boto3 def overlaps(start1, end1, start2, end2): return max(start1, start2) < min(end1, end2) def load_logs(region, group, start=0, end=2672995600000): client = boto3.client('logs', region_name=region) paginator = client.get_paginator('describe_log_streams') response_iterator = paginator.paginate(logGroupName=group) events = [] for page in response_iterator: for log_stream in page["logStreams"]: print(f"Stream: {log_stream['logStreamName']}, start: {log_stream['firstEventTimestamp']} end: {log_stream['lastEventTimestamp']}") if overlaps(log_stream["firstEventTimestamp"], log_stream["lastEventTimestamp"], start, end): print("processing") token = None while True: event_args = { "logGroupName": group, "logStreamName": log_stream['logStreamName'], "startTime": start, "endTime": end } if token is not None: event_args["nextToken"] = token response = client.get_log_events(**event_args) for event in response["events"]: if start < event["timestamp"] < end: events.append(event) if response["nextBackwardToken"] == token: break else: token = response["nextBackwardToken"] print(events)我将
0作为start传递,将遥远的未来2672995600000作为end传递,并且下载了一些事件,但是events列表不包含所有日志事件。我缺少一些迭代吗?我特别关心get_log_eventsiteration
【问题讨论】:
标签: python amazon-web-services loops amazon-cloudwatch amazon-cloudwatchlogs