通过 CodeStar 创建 Amazon Linux 2 个实例

Create Amazon Linux 2 instance via CodeStar

我已经使用 AWS CodeStar 使用 Elastic Beanstalk 创建了一个 Java Web 应用程序。该应用程序有效,没有问题。但是 Elastic Beanstalk 提供的 EC2 实例是 运行ning Amazon Linux 1。我需要有 Amazon Linux 2,因为我想在那里安装一些东西 运行仅在 Amazon Linux 2. 实例使用的 AMI 是 aws-elasticbeanstalk-amzn-2018.03.0.x86_64-tomcat8.5java8-hvm-202102251130.

当您通过 CodeStar 创建项目时,您只能 select 实例类型(我 selected t3.micro 开始)。没有办法select操作系统。您也不能在 EC2 控制台或 Elastic Beanstalk 控制台中指定 OS。解决方案可能是 select 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 环境。

第二个选项,转到CodeStar项目的CodePiepline并编辑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 平台设计的,而不是新的。