У меня есть скрипт, который запускается в EC2 каждую минуту с заданием cron и посылает логи в cloudwatch. Моя проблема в том, что он отправляет много журналов за короткое время и иногда создает ошибку (произошла ошибка (InvalidSequenceTokenException) при вызове операции PutLogEvents).
Я прочитал, что возможно посылать 5 журналов в секунду потоковым журналом. И иногда я посылаю больше. https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html
Я использую класс python:
def sequencetoken(self):
logdescribe = self.client.describe_log_streams(logGroupName=self.group, logStreamNamePrefix=self.stream)
logStreams = logdescribe['logStreams']
logStream = logStreams[0]
sequenceToken = logStream['uploadSequenceToken']
return sequenceToken
def send_cloudwatch_log_message(self, message=None):
response = self.client.put_log_events(
logGroupName=self.group,
logStreamName=self.stream,
sequenceToken=self.sequencetoken(), # IMPORTANT -> if it's your first log you don't need sequencetoken()
logEvents=[
{
'timestamp': self.get_time(),
'message': 'SID= {} JOB_ID= {} INFO= {} ST={}'.format(self.session, self.job_id, message, self.sequencetoken())
}
]
)
Я думаю, может быть, поставить time.sleep (0.1) или создать буфер, но Я не уверен, что это хорошее решение.
У кого-то была такая же ошибка?
Спасибо за вашу помощь.