0

我有一个在自动缩放Elastic Beanstalk Web环境上运行的平台(基于Rails 4/Postgres)。我正计划将长时间运行的任务(与第三方同步,发送电子邮件等)卸载到工作层,这看起来很简单,可以启动和运行。在Elastic Beanstalk Web和工作层之间共享数据

但是,我也想运行定期批处理。我研究过使用cron.yml,并且调度看起来非常简单,但是我正在尝试构建的批处理过程需要从Web应用程序访问数据才能工作。

有没有人有任何意见这样做的最佳方式? Web和工作层之间的共享RDS数据库,还是工作层可以访问的Web服务?

感谢, 丹

注:我添加了一个额外的问题,它更广泛地介绍我的 要求,我突然想到,这可能不是最好的办法。 What's the best way to implement this shared batch process with Elastic Beanstalk?

+0

我只会访问您的Rails应用程序正在访问的相同Postgres数据库。关于你的工作层的设置:这里是我写的宝石,它应该能够简化这个过程 - > https://github.com/tawan/active-elastic-job – Tawan

+0

这看起来不错,谢谢。在弹性beanstalk Web层(数据库所在的位置)和新的工作层之间是否有共享数据库凭据(它是自动生成的环境变量)的首选方式? –

+0

您可以将相同的环境变量添加到工作层。在您的AWS控制台中:选择工作环境 - >配置 - >软件配置 - >环境属性 – Tawan

回答

1

除非你需要一个完整的关系数据库管理系统(RDBMS),可以考虑使用S3能够在整个实例共享持久性数据存储。

还要考虑Amazon Simple Queue Service (SQS)

SQS是一种快速,可靠,可扩展,完全托管的消息队列 服务。 SQS使解耦云应用程序的组件变得简单且经济高效。您可以使用SQS以任何吞吐量级别传输任何数据量的数据,而不会丢失消息或要求其他服务始终可用。