问题描述
我使用 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 构建的。
所以我的问题是:
解决方法
有两种方法可以更改它,但我不知道强制更改 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 平台而非新平台设计的。