我正在尝试使用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。

最佳答案

也许您误解了LogStreamLogEvent

这是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
)

07-24 09:39
查看更多