【问题标题】:How do you use cron jobs using Elastic Beanstalk and Java?您如何使用 Elastic Beanstalk 和 Java 使用 cron 作业?
【发布时间】:2019-05-28 05:29:49
【问题描述】:

我想运行 cron 作业并使用相同的代码库。我找到了一些解决方案,但它们看起来并不理想。例如,使用 Heroku,您可以添加 Scheduler element 并填写命令以在网页中运行。

  • http://blog.rotaready.com/scheduled-tasks-elastic-beanstalk-cron/
    • 对于负载平衡的实例来说似乎过于复杂。
    • 它在 Node 中使用了require('async'),但 Java Spring Boot 的等效项是什么?
  • https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
    • 似乎没有任何安全措施。网络中的任何人都可以访问 / 路径以进行 POST 并执行作业,从而导致拒绝服务攻击。
    • 它提到了cron.yaml,这是没有意义的,因为应用程序是通过 WAR/ZIP 文件部署到 Tomcat 实例(Spring Boot)。
    • 它提到了我们不使用的 Amazon DynamoDB。我们使用 MySQL。
    • 未指定负载平衡器连接耗尽超时是否对这些作业有效(10 秒)。
    • 在环境管理控制台的Configuration页面中提到了“Worker Configuration card”,但是Configuration页面下没有Worker Configuration卡。
  • Running a cron job in Elastic Beanstalk
    • 对于 Python/Django - 使用 cron.yaml
  • 我想只拥有一个专用的 EC2 实例,但是如何在那里部署最新的代码更改?

这也可能属于 SoftwareEngineering.StackExchange。

【问题讨论】:

    标签: java amazon-web-services spring-boot cron amazon-elastic-beanstalk


    【解决方案1】:

    有一种使用其他 AWS 系统的简单方法。

    您可以使用 CloudWatch 设置计划事件 (https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)。您可以设置规则以按既定时间表设置事件。

    那么您至少有两个选择:

    • 设置事件以发布 SNS 消息并使用该 SNS 调用服务器上的 Web 挂钩。关于如何执行此操作的许多示例,但您必须确保检查签名以确保从签名的 SNS 调用 Web API。但这将使用公共 API,可能不是您喜欢的。

    • 设置事件以发布 SQS 消息。然后设置一个弹性 beanstalk worker 来处理 SQS 消息或者只是在你的主服务器上运行一个后台脚本,这基本上是一个无限循环轮询 SQS 的工作。

    不确定您对这些系统的熟悉程度,因此不确定是否清楚我在说什么,但无法给出详细的解决方案,因此希望这足以给您提供想法。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2017-04-20
      • 2016-11-26
      • 2016-11-25
      • 2013-01-23
      • 2016-11-18
      • 2016-06-30
      • 2014-05-27
      相关资源
      最近更新 更多