Я написал AWS лямбда-функцию, которая запускается каждые 15 минут. Функция читает из очереди Kafka в течение 2 минут, сохраняет их во временном файле и по истечении 2 минут, если загружает файл в корзину S3.
В настоящее время в корзине нет лямбда Роль IAM в его политике записи, поэтому загрузка на S3 вызывает исключение. Все это нормально, и как только соответствующие политики добавлены, исключений быть не должно.
У меня есть некоторые сомнения по поводу вышесказанного:
- Функция лямбда продолжает поступать после каждых 2 минут. Это потому, что предыдущий вызов закончился с ошибкой?
- Поскольку я читаю из Kafka, я использую фиксированный идентификатор группы, чтобы не читать сообщения дважды. Предположим, что лямбда выходит из строя на полпути из-за какой-то проблемы (не проблемы с подключением, а чего-то другого). Если появится другая функция, она начнет читать с последнего прочитанного сообщения. Однако, поскольку предыдущий вызов не удался на полпути и не смог записать сообщения в корзину S3, второй вызов пропустит эти сообщения. Есть ли способ, которым я не пропускаю эти сообщения? (У меня есть идея сохранить смещения в S3 после завершения каждого вызова и назначить эти смещения вручную потребителю, чтобы в случае сбоя любого вызова на полпути не возникли смещения и я не потерял ни одного сообщения. Но если есть способ избежать чтения с S3, это было бы здорово).