#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.
Поэтому мой вопрос таков:
- Есть ли простой способ получить экземпляр AL2 для проекта CodeStar?
- Если единственное решение-указать 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. Решение работает. И вы были правы, приложение не работает после изменения.