Создайте экземпляр Amazon Linux 2 с помощью CodeStar

#amazon-ec2 #amazon-elastic-beanstalk #amazon-linux #amazon-linux-2 #aws-codestar

Вопрос:

Я создал веб-приложение Java с эластичным бобовым стеблем, используя AWS CodeStar. Приложение работает, никаких проблем нет. Но экземпляр EC2, предоставленный Elastic Beanstalk, работает под управлением 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. Решением может быть выбор другого AMI в группе автоматического масштабирования, но я не уверен, будет ли шаблон, предоставленный CodeStar, работать на AL2, поскольку он был создан для AL1.

Поэтому мой вопрос таков:

  1. Есть ли простой способ получить экземпляр AL2 для проекта CodeStar?
  2. Если единственное решение-указать AMI, каким он должен быть и как убедиться, что мой проект будет там работать?

Ответ №1:

Есть два способа изменить его, но я не знаю, не нарушит ли принудительное изменение версии платформы EB некоторые CodeStar совместимости. В любом случае, ты можешь попробовать, если хочешь.

Первый вариант, вы можете перейти в репозиторий исходного кода и открыть template.yml . Найдите строку SolutionStackName: !Ref 'SolutionStackName' и перейдите на нужную вам платформу, например:

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

Это изменение должно спровоцировать повторное развертывание вашего CodeStar проекта и EB env.

Или второй вариант, перейдите к 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, а не для новых.

Комментарии:

1. Решение работает. И вы были правы, приложение не работает после изменения.