Как вы используете задания cron, используя Elastic Beanstalk и Java? - PullRequest
0 голосов
/ 01 января 2019

Я хочу запускать задания cron и использовать ту же базу кода.Я нашел несколько решений, но они не кажутся идеальными.Например, в Heroku вы можете добавить элемент Scheduler и заполнить команды для запуска на веб-странице.

  • http://blog.rotaready.com/scheduled-tasks-elastic-beanstalk-cron/
    • Это кажется слишком сложным для случаев с балансировкой нагрузки.
    • Он использует require('async') в Node, но что будет эквивалентом Java Spring Boot?
  • https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
    • Кажется, нет никакой безопасности.Любой пользователь сети может получить доступ к / path для POST и выполнить задание, вызывая атаку типа «отказ в обслуживании».
    • упоминается cron.yaml, что не имеет смысла, поскольку приложение развертывается через файл WAR / ZIP на экземпляр Tomcat (Spring Boot).
    • В нем упоминается Amazon DynamoDB, который мы не используем.Мы используем MySQL.
    • Не указывается, действует ли для этих заданий тайм-аут слива соединения балансировщика нагрузки (10 с).
    • В нем упоминается «Карта конфигурации работника на странице конфигурации в консоли управления средой».но на странице конфигурации нет рабочей карты конфигурации.
  • Запуск задания cron в Elastic Beanstalk
    • Для Python / Django - используется cron.yaml.
  • Я думал просто о выделенном экземпляре EC2, но как я могу развернуть там последние изменения кода?

Это может также относиться к SoftwareEngineering.StackExchange.

1 Ответ

0 голосов
/ 01 января 2019

Существует простой способ сделать это с помощью других систем AWS.

Вы можете использовать CloudWatch для установки запланированных событий (https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html).. Вы можете установить правило для установки события по заданному расписанию..

Затем у вас есть как минимум две опции:

  • установить событие для публикации сообщения SNS и использовать этот SNS для вызова веб-ловушки на вашем сервере. Много примерово том, как это сделать, но вы должны будете убедиться, что вы проверили подпись, чтобы убедиться, что веб-API вызывается из подписанного SNS. Но это будет использовать общедоступный API и, возможно, вас не устраивает.

  • установить событие для публикации сообщения SQS, а затем настроить работника эластичного beanstalk для обработки сообщения SQS или просто запустить фоновый скрипт на главном сервере, который в основном находится в бесконечном цикле, опрашивая SQS для работыделать.

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

...