Избегайте опроса и длительной лямбда-задачи - PullRequest
1 голос
/ 07 мая 2019

У меня есть группа cloudwatch, которая отслеживает, сколько раз мое приложение запускалось. Затем я написал функцию lamba, которая должна каждые 24 часа в python извлекать эти логи с помощью boto3. Для этого я запускаю запрос, а затем опрашиваю метод get_query_results, чтобы узнать, завершен ли он. Однако это оставляет меня с довольно плохой реализацией, которая использует много ресурсов.

Есть ли лучший способ использовать какой-нибудь обратный вызов для этого?

Это две функции, которые я использую https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/logs.html#CloudWatchLogs.Client.start_query

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/logs.html#CloudWatchLogs.Client.get_query_results

query_id = cloudwatch_connector.start_query('fields @timestamp, @message|filter @message like /APPSTART/').get('queryId')

# Wait until it is completed
running = True
while running:
    response = cloudwatch_connector.get_query_results(query_id)
    status = response.get('status')
    if status == 'Complete':
        print("Done gathering logs")
        print(response)
        running = False
    if status == 'Failed' or status == 'Cancelled':
        raise Exception('Request either failed or was cancelled')
    time.sleep(1000)

Я действительно хочу выполнить запрос Insights и сохранять его в текстовом файле каждую ночь в 00:00

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...