我正在尝试使用 python 中的 boto3 从 AWS CloudWatch 获取 LogGroup 的最新 LogStream。
这是我的代码 -
import boto3
import datetime
from datetime import datetime
session = boto3.session.Session(profile_name='saml')
client = session.client(service_name = 'logs' ,region_name='ap-southeast-2')
t1 = datetime.timestamp(datetime.utcnow())
response = client.filter_log_events(logGroupName='/aws/lambdagroup/name', limit = 1, startTime = int(t1))
我得到以下输出
{'events': [], 'searchedLogStreams': [{'logStreamName': '2019/04/28/[$LATEST]09e21ad3881e456b9cdc5cd48ff3d919', 'searchedCompletely': True}, {'logStreamName': '2019/04/28/[$LATEST]29919c675dd546eea103789f0b5943
79', 'searchedCompletely': True}, {'logStreamName': '2019/04/28/[$LATEST]679942908fba4d7287cc5ac288373568', 'searchedCompletely': True}, {'logStreamName': '2019/04/28/[$LATEST]68874fb83e8b47dfb0efc410b9314528',
'searchedCompletely': True}, {'logStreamName': '2019/04/28/[$LATEST]6c9e152d09574c49a37da86769e2a9b3........................ etc
问题 - 当我的开始时间指定为当前时间时,为什么我会收到 04/28 以后的日志?
我只想从特定的 LogGroup 获取最新的 LogStream。
最佳答案
也许您误解了LogStream
和LogEvent
。
这是 filter_log_events
的 api :
response = client.filter_log_events(
logGroupName='string',
logStreamNames=[
'string',
],
logStreamNamePrefix='string',
startTime=123,
endTime=123,
filterPattern='string',
nextToken='string',
limit=123,
interleaved=True|False
)
如果您不指定logStreamNames
,它将在所有LogStreams中搜索事件。
这就是为什么你得到 'events': []
和 'searchedLogStreams': [{'logStreamName':...
要获取最新的LogStream,您可以使用describe_log_streams
:
response = client.describe_log_streams(
logGroupName='/aws/group/name',
orderBy='LastEventTime',
descending=True,
limit=1
)
关于python - 尝试从 CloudWatch 获取最新的 LogStream 时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761049/