【问题标题】:Create Amazon Linux 2 instance via CodeStar通过 CodeStar 创建 Amazon Linux 2 实例
【发布时间】:2021-06-18 05:04:11
【问题描述】:

我使用 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,它应该是哪一个以及如何确保我的项目可以在那里工作?

【问题讨论】:

    标签: amazon-ec2 amazon-elastic-beanstalk amazon-linux amazon-linux-2 aws-codestar


    【解决方案1】:

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

    【讨论】:

    • 该解决方案有效。你是对的,应用程序在更改后无法运行。
    猜你喜欢
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2014-05-29
    • 2013-08-08
    • 1970-01-01
    • 2021-11-12
    • 2019-09-13
    • 2021-03-03
    相关资源
    最近更新 更多