通过 CodeStar 创建 Amazon Linux 2 实例

问题描述

我使用 AWS CodeStar 通过 Elastic Beanstalk 创建了一个 Java Web 应用程序。该应用程序有效,没有问题。但是 Elastic Beanstalk 配置的 EC2 实例正在运行 Amazon Linux 1。我需要有 Amazon Linux 2,因为我想在那里安装的一些东西只能在 Amazon Linux 2 上运行。用于实例的 AMI 是 {{1} }.

当您通过 CodeStar 创建项目时,您只能选择实例类型(我选择 t3.micro 作为开始)。没有办法选择操作系统。您也不能在 EC2 控制台或 Elastic Beanstalk 控制台中指定操作系统。解决方案可能是在 Auto-scaling 组中选择不同的 AMI,但我不确定 CodeStar 提供的模板是否适用于 AL2,因为它是为 AL1 构建的。

所以我的问题是:

  1. 是否有一种简单的方法可以为 CodeStar 项目获取 AL2 实例?
  2. 如果唯一的解决方案是指定 AMI,那么应该是哪一个,以及如何确保我的项目能够在那里运行?

解决方法

两种方法可以更改它,但我不知道强制更改 EB 平台版本是否会破坏某些 CodeStar 兼容性。不管怎样,如果你愿意,你可以试一试。

第一个选项,您可以转到源代码存储库,然后打开 template.yml。找到第 SolutionStackName: !Ref 'SolutionStackName' 行并更改为您想要的平台,例如:

      SolutionStackName: 64bit Amazon Linux 2 v4.1.6 running Tomcat 8.5 Corretto 11   

更改应该会触发您的 CodeStar 项目和 EB 环境的重新部署。

第二个选项,转到您的 CodePiepline 项目的 CodeStar 并编辑 Deploy 阶段的 GenerateChangeSet 操作。在操作的 Advanced 设置中,将 Parameter overrides"SolutionStackName":"64bit Amazon Linux 2018.03 v3.4.4 running Tomcat 8.5 Java 8", 设置为您想要的,例如:

  "SolutionStackName":"64bit Amazon Linux 2 v4.1.6 running Tomcat 8.5 Corretto 11",

请注意,您可能还需要向 CodePipeline 用于 CloudFormation 的角色添加权限。角色名称可以在 GenerateChangeSet 操作详细信息中找到。获得名称后,您可以转到 IAM 控制台,并添加缺少的权限。在我的测试中,我确实尝试找到所需的最低权限,所以我只是添加了一堆(不良做法):

AmazonEC2FullAccess
AdministratorAccess-AWSElasticBeanstalk
AWSCloudFormationFullAccess

最后,CodeStar 使用的演示应用程序可能不适用于更新后的环境,因为它是为旧的 EB 平台而非新平台设计的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...