Установите время ожидания перед выполнением пакета для AWS Kinesis - PullRequest
1 голос
/ 05 февраля 2020

Я использую AWS Kinesis (настраивается с помощью Serverless Framework) и использую batchSize из 1 .

processEvents:
    handler: ...
    events:
      - stream:
          type: kinesis
          batchSize: 1
          arn:
            Fn::GetAtt: [KinesisStream, Arn]

Есть ли способ например, установить таймаут в 20 секунд перед чтением следующего пакета?

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

Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2020

Ваша лямбда вызывается Kinesis синхронно, и она будет переходить к следующему событию только в случае успешного возврата лямбды.

Эти обстоятельства дают вам возможность самостоятельно записать задержку в свой код лямбды.

await new Promise(done => setTimeout(done, 20000))
processMyEvent(event)

При размере пакета 1 эта лямбда должна сначала завершить sh до запуска следующего события.

Обратите внимание, что дополнительное время выполнения лямбды повлечет за собой затраты.

Вы можете go также и в другом направлении, выполнить свой действительный код и затем отложить отключение Lambda. Вы даже можете использовать объект контекста, чтобы увидеть, как долго работает Lambda, если ваша обработка меняется во время выполнения.

Наконец, я бы рекомендовал изменить вашу архитектуру. Помимо дополнительных затрат, вы искусственно замедляете работу своей платформы.

...