2014-01-20 59 views
2

想知道是否有人可以幫助下面的亞馬遜AWS問題,似乎是一個基本的項目,但無法找到任何答案,變得非常沮喪。指向亞馬遜AWS Elastic Beanstalk到現有的EC2

1)我有一個運行的EC2實例,它有第三方進程在後臺運行,當從命令行調用它時會吐出一個數字。

2)我有一個運行此命令行並使用Web GUI中等輸出一個Java Web應用程序..

但對我的生活,我無法弄清楚如何部署我的Java Web應用程序在運行該進程的SAME現有EC2上,每當我嘗試創建彈性beanstalk時,都會創建一個新的EC2實例。

我如何讓彈性豆杆跑掉現有的EC2我已經擁有?我知道還有其他解決方法可以遠程傳遞數據,但這似乎是AWS缺少的一項基本要求 - 您無法在同一個EC2實例上運行帶有後端/批處理流程的Web應用程序?

謝謝

回答

1

彈性豆莖基本上是上EC2更高的抽象層,它的緊密耦合的。這意味着每次部署應用程序時至少需要一臺EC2服務器。

好處是您不需要管理您的EC2實例,例如它會根據您的流量需求自動自動調整。

缺點是它理論上不允許你在EC2實例中調整一些小東西,因爲你可能會搞砸Elastic Beanstalk如何解釋你的應用。另外,我相信您不能強制您的Elastic Beanstalk部署使用特定的AMI。

如果你想在你的應用程序中有更多的靈活性(這聽起來像你的做法),我建議你做你自己的應用程序部署(沒有Elastic Beanstalk)。這樣,您可以在同一個EC2實例上運行您的應用程序和您的作業。

1

您可以使用自定義AMI和Elastic Beanstalk。

AWS文檔有關於如何創建和使用自定義AMI指南:Using Custom AMIs

但話又說回來,沒有人阻止你的標準彈性魔豆實例中運行的後臺進程。我在一個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中安排任何事情。