亚马逊 AWS ElasticBeanstalk 自定义 AMI

Posted

技术标签:

【中文标题】亚马逊 AWS ElasticBeanstalk 自定义 AMI【英文标题】:Amazon AWS ElasticBeanstalk custom AMI 【发布时间】:2012-09-30 04:03:18 【问题描述】:

我正在尝试在 AWS Beanstalk 中使用自定义 AMI。我在 EC2 中手动启动了默认的 Amazon ElasticBeanstalk 映像 (ElasticBeanstalk-Tomcat7-32bit-20110913-1132 (ami-278e4c4e)) 并从中创建了我的自定义 AMI。然后我转到 ElasticBeanstalk,启动一个环境,一旦它启动并运行,我就切换到环境配置中的这个自定义 AMI。

健康状态为绿色。但是我的 webapp 没有部署在实例上:

[root@ip-***-***-***-*** ~]# ls -l /opt/tomcat7/webapps
total 0

Tomcat 正在运行:

[root@ip-***-***-***-*** ~]# /etc/init.d/tomcat7 status
Tomcat 7 is running.

我对为什么我的应用没有部署感到困惑。有谁知道怎么回事?

【问题讨论】:

【参考方案1】:

嗯,Beanstalk AMI 使用初始化脚本从 S3 复制您的应用程序,并将其部署到容器 (Tomcat)。 我会推荐: 1. 查看 CloudInit 日志:/var/log/cloud-init.log。 2. 如果一切正常(甚至为空),编辑 /etc/sysconfig/cloudinit 中的脚本以添加一些跟踪,以检查 CloudInit 脚本是否已执行,或者在某些时候失败。

很抱歉无法为您提供更好的帮助,但从这里很难知道发生了什么!

【讨论】:

谢谢 Dani,我知道我做错了什么。我试图使用自定义 AMI,但实际上没有对其进行自定义。只是试图证明这个概念......然后失败了。看我自己的答案。感谢您的帮助。【参考方案2】:

我通常做的是启动一个 Beanstalk 实例(不是具有 Beanstalk AMI 的实例),然后我对该实例进行修改,最后我创建我的自定义 AMI 来完成您想要实现的目标。

【讨论】:

嗨马尔科姆,这正是我一直在做的,抱歉,如果我没有更详细地解释;它一定是别的东西。几周前我让它工作了,但现在我似乎不能再做同样的事情了。安全组似乎也是正确的(0.0.0.0/0 可以访问端口 80)。您还有其他想法吗? 嗨 pumuckl,嗯,Beanstalk AMI 使用初始化脚本从 S3 复制您的应用程序,并将其部署到容器 (Tomcat)。【参考方案3】:

与此同时,我发现了问题所在。当您从 Amazon 预定义的 Beanstalk 映像之一创建自己的 AMI 时,您实际上并未对文件系统进行任何更改(安装任何东西、创建文件等),AWS 在创建自定义快照时不会创建新快照急性心肌梗死。然后创建的 AMI 将无法在 Beanstalk 中运行。

只要您在创建自己的自定义 AMI 之前对默认图像进行任何更改,一切都会正常工作。

【讨论】:

以上是关于亚马逊 AWS ElasticBeanstalk 自定义 AMI的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk (AWS) 的休眠配置

.NET Core AWS RDS 连接

亚马逊网络服务 (AWS) 上的 Django

亚马逊AWS |如何让 CORS 允许从特定域访问?

在 Amazon AWS Elastic Beanstalk 环境中存储应用程序

在亚马逊 AWS 弹性豆茎(或本地?)上安装解析仪表板