1

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

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

所以我的问题是:

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

1 回答 1

1

两种方法可以改,但是不知道强制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 平台设计的,而不是新的。

于 2021-03-21T11:32:37.937 回答