自定义 Elastic Beanstalk AMI

9
我需要在Elastic Beanstalk上使用为Glassfish服务器编写的Java应用程序。 由于Amazon不允许我选择带有Glassfish的AMI,我选择了一个带有Tomcat的AMI,并修改了我的应用程序以在Tomcat上正常工作。
现在,我发现我还需要使用Sun JDK,而默认情况下Elastic Beanstalk AMI带有openjdk。我搜索了很多资源,找到了一些(不是很多)有趣的帖子,比如StackOverflow上的这个答案。
我无法理解答案中的这部分内容:
从手动启动的EC2实例中创建自定义AMI,而不是从通过beanstalk启动应用程序的实例中创建AMI。
所以,我的问题是:有人知道如何在Elastic Beanstalk上使用带有Glassfish的自定义AMI吗? 如果不可能,有人可以向我解释如何创建自定义AMI吗?
谢谢, 安德烈亚
3个回答

10

这个回答的意思是“不要从beanstalk应用程序中直接剪切AMI。相反,启动基于beanstalk AMI的实例(这些实例在公共AMI列表中可用)。也就是说,使用其中一个;请注意其中有84个:

Beanstalk AMIs

当您完成配置该实例后,请制作自己的私有AMI,并在beanstalk环境中指定它。


好的,谢谢Christopher。我成功创建了我的自定义AMI,从EB镜像开始,但是一旦我更改Java版本(遵循http://biztech.sheprador.com/?p=153),我就遇到问题了,我的应用程序变得无法访问... - andreaxi
catalina.out 告诉你什么? - Christopher
我又从零开始了。现在我正在复制所有建议的步骤。希望有好消息……我会让你知道的,谢谢。 - andreaxi
学习过程可能会很陡峭,但一旦到达巅峰,维护就相对容易了。在亚马逊上没有真正困难的事情。只是找出语法和程序需要花费大量时间。 - Christopher
这个对你还管用吗?当我在市场上搜索“beanstalk”时,只有一个第三方AMI被列出。 - Mark Berry
@MarkBerry,在AMI选择屏幕上,选择左侧的“社区AMI”选项卡。这样你就会得到更多的结果。 - salsbury

6
我个人发现所选答案难以理解,可能是因为我仍在学习AWS的过程中。也许这个答案能帮助其他新手。刚刚弄清如何成功地使用自己的定制AMI启动Elastic Beanstalk实例,我认为这段引用的意思是执行以下几个完全不明显的步骤,它们对我有效:
  1. 进入EC2服务(而非Elastic Beanstalk服务),并启动一个基于你想要用作自定义AMI出发点的Elastic Beanstalk AMI的实例。接下来就可以删除临时创建的EC2实例了。

  2. 选择该实例,然后选择“创建镜像/EBS AMI”。一旦创建完成,你可以删除临时创建的EC2实例,它只是创建自定义AMI的辅助工具。

  3. 现在转到Elastic Beanstalk服务,并编辑配置以引用您的自定义AMI。


1
这会给你带来什么好处呢?你可以直接从正在运行的实例中获取AMI ID。关键是要有一个干净的EB AMI,然后进行自定义。如果您尝试自定义已部署的系统,则会意外地硬编码一些配置。 - Kousha
在步骤1和步骤2之间应该有另一步,我们可以根据自己的需求定制实例,然后保存新配置实例的AMI。 - Pratik Singhal

1

@危险 这将加快扩展流程。

我正在EB上使用一个docker应用,但是从Docker Hub上的“docker pull”非常慢,因此当所有实例都无法正常工作时,我的网站将在15-30分钟内宕机。创建自定义AMI并拉取基础的Docker镜像将节省时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接