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

Posted

技术标签:

【中文标题】将亚马逊 AWS Elastic Beanstalk 指向现有的 EC2【英文标题】:Pointing amazon AWS Elastic Beanstalk to existing EC2 【发布时间】:2014-02-10 01:06:20 【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

【参考方案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 中安排任何事情。

【讨论】:

【参考方案2】:

Elastic Beanstalk 基本上是 EC2 上的一个更高抽象层,并且与它紧密耦合。这意味着至少每次部署应用程序时,它都会启动一个 EC2 服务器。

优点是您不需要管理您的 EC2 实例,例如它会根据您的流量需求自动扩展。

缺点是它理论上不允许您在 EC2 实例中调整小东西,因为您可能会弄乱 Elastic Beanstalk 解释您的应用程序的方式。另外,我相信您不能强制您的 Elastic Beanstalk 部署使用特定的 AMI。

如果您希望您的应用程序具有更大的灵活性(听起来像您这样做),我建议您为您的应用程序进行自己的部署(无 Elastic Beanstalk)。这样您就可以在同一个 EC2 实例上运行您的应用和作业。

【讨论】:

以上是关于将亚马逊 AWS Elastic Beanstalk 指向现有的 EC2的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊 AWS Elastic Beanstalk NodeJS 应用程序

Nodemailer 不在 aws elastic beanstalk 中发送电子邮件

在aws elastic beanstalk上上传文件?

AWS Elastic Beanstalk HTTPS

使用 CLI 在 AWS Elastic Beanstalk 上部署 RoR 项目

AWS Elastic Compute Cloud 每天收费超过 24 小时 [关闭]