Странное поведение при попытке получить самый последний LogStream из CloudWatch - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь получить самый последний LogStream для LogGroup от AWS CloudWatch, используя boto3 в python.

Это мой код -

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 года, когда у меня начинается время? указано с текущего времени?

Я просто хочу получить самый последний LogStream из определенной LogGroup.

1 Ответ

1 голос
/ 08 ноября 2019

Возможно, вы неправильно поняли LogStream и LogEvent.

Вот API filter_log_events:

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
)
...