想知道是否有人可以帮助解决以下亚马逊AWS问题,似乎是一个基本项目,但找不到任何答案,变得非常沮丧。
1)我运行的EC2实例在后台运行第三方进程,从命令行调用时会吐出一个数字。
2)我有一个运行此命令行的java Web应用程序,并使用web gui等输出。
但是对于我的生活,我无法弄清楚如何在运行该过程的SAME现有EC2上部署我的Java Web应用程序,每次我尝试创建弹性beanstalk时,它都会创建一个新的EC2实例。
如何使弹性豆茎运行我已经拥有的相同的现有EC2?我知道还有其他解决方法可以远程传递数据,但这似乎是AWS缺少的一项基本要求 - 您无法在同一EC2实例上运行带有后端/批处理的Web应用程序?
谢谢
答案 0 :(得分:1)
Elastic Beanstalk基本上是EC2上的一个更高的抽象层,它与它紧密耦合。这意味着每次部署应用程序时,它至少会启动一个EC2服务器。
优势在于您无需管理EC2实例,例如,它会根据您的流量需求自动进行自动缩放。
缺点是理论上它不允许你在EC2实例中调整一些小东西,因为你可能搞砸了Elastic Beanstalk如何解释你的应用程序。此外,我相信您无法强制您的Elastic Beanstalk部署使用特定的AMI。
如果您希望应用程序具有更大的灵活性(听起来像您的那样),我建议您为自己的应用程序进行自己的部署(No Elastic Beanstalk)。这样,您就可以在同一个EC2实例上运行您的应用和作业。
答案 1 :(得分:1)
您可以将自定义AMI与Elastic Beanstalk配合使用。
AWS文档提供了有关如何创建和使用自定义AMI的指南:Using Custom AMIs
但话说回来,没有人阻止你在标准的Elastic Beanstalk实例上运行后台进程。我在一个Elastic Beanstalk实例上运行后台cron作业和Flask应用程序。
files:
"/tmp/cronjob-for-foobar" :
mode: "000777"
owner: ec2-user
group: ec2-user
content: |
# skip
# clean up files created by above cronjob
30 23 * * * rm $HOME/cron*.log
container_commands:
70-foobar-cronjobs:
command: crontab /tmp/cronjob-for-foobar
显然,只要您保持在实例限制范围内,就可以在cron中安排任何事情。