我正在尝试使用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
,它将在所有LogStream中搜索事件。这就是为什么您得到
'events': []
和'searchedLogStreams': [{'logStreamName':...
要获取最新的LogStream,可以使用
describe_log_streams
:response = client.describe_log_streams(
logGroupName='/aws/group/name',
orderBy='LastEventTime',
descending=True,
limit=1
)