У меня есть группа 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
.