将亚马逊AWS Elastic Beanstalk指向现有的EC2

时间:2014-01-20 18:09:19

标签: amazon-web-services amazon-ec2 elastic-beanstalk

想知道是否有人可以帮助解决以下亚马逊AWS问题,似乎是一个基本项目,但找不到任何答案,变得非常沮丧。

1)我运行的EC2实例在后台运行第三方进程,从命令行调用时会吐出一个数字。

2)我有一个运行此命令行的java Web应用程序,并使用web gui等输出。

但是对于我的生活,我无法弄清楚如何在运行该过程的SAME现有EC2上部署我的Java Web应用程序,每次我尝试创建弹性beanstalk时,它都会创建一个新的EC2实例。

如何使弹性豆茎运行我已经拥有的相同的现有EC2?我知道还有其他解决方法可以远程传递数据,但这似乎是AWS缺少的一项基本要求 - 您无法在同一EC2实例上运行带有后端/批处理的Web应用程序?

谢谢

2 个答案:

答案 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中安排任何事情。