Назад | Перейти на главную страницу

Сохранять изменения файлов в экземпляре EC2, не создавая каждый раз новую конфигурацию AMI / Launch

Я новичок в AWS, но у меня есть очень маленький экземпляр Amazon Linux EC2, который используется для простого, случайного процесса PHP, поэтому я не использую CodeDeploy, балансировщики нагрузки и т. Д. Мой босс хочет использовать WinSCP для загрузки время от времени немного кода PHP.

Мне интересно, как лучше всего сохранить эти изменения PHP в случае завершения или перезагрузки экземпляра. В настоящее время я вижу единственный способ сделать это - обновить файлы, затем создать новый AMI, затем создать новую конфигурацию запуска с этим новым изображением и применить ее к группе Auto Scaling. Похоже, потребуется много работы, чтобы поддерживать файлы на томе EBS в актуальном состоянии.

Я что-то упускаю? Возможно, что-то можно сделать с томами и снимками EBS?

Спасибо за любой совет.

Это похоже на большой объем работы, чтобы поддерживать файлы на томе EBS в актуальном состоянии.

Это много работы. Но проблема не в объеме работы. Дело в том, что вы просите большего, чем просто поддерживать файлы на томе EBS в актуальном состоянии. Вы запрашиваете обновления вашего экземпляра EC2 для сохранения на других экземплярах EC2.

Тома EBS подобны жесткому диску на локальном компьютере. AWS выполняет некоторую закулисную работу, чтобы гарантировать репликацию данных, но это все в пределах одного тома EBS.

Завершение инстанса EC2 и удаление тома похоже на то, что я прихожу к вам домой и разбиваю ваш компьютер кувалдой. Ожидаете ли вы, что ваши данные волшебным образом реплицируются на ваш новый компьютер, если предварительно не предприняли никаких действий для защиты этих данных? Конечно нет.

Если том EBS удален, данные исчезнут. AWS не может волшебным образом реплицировать данные в другом месте. Решать тебе, если вам это нужно по истечении срока службы тома EBS. И это ключевой момент: не всем нужно, чтобы данные сохранялись по истечении срока службы тома EBS.

Когда вы снимаете флаг «Удалить при завершении» для тома EBS, это просто означает, что после завершения работы экземпляра EC2 том EBS не удаляется. В этом случае том EBS останется неиспользованным в вашей учетной записи AWS.

Неприкрепленный том EBS можно подключить к другому экземпляру EC2, чтобы вы могли его использовать, но, опять же, это не волшебно для вас. Это нужно делать самому.

AWS:

  1. обеспечивает максимальную защиту ваших данных, где это возможно, и
  2. предоставил вам инструменты для дальнейшего продвижения.

Знайте, где останавливается №1 и где вам нужно действовать с №2.

Итак, да, сохранение файлов на томе EBS зависит от AWS. Однако, опять же, это не то, что вам нужно. Ты хочешь больше.

Если вы хотите, чтобы данные сохранялись после завершения работы экземпляра EC2, вам нужно сделать больше. Вам нужно создать образ AMI и обновить конфигурацию запуска группы Auto Scaling.

Вам не нужно беспокоиться о перезагрузке экземпляра. Убедитесь, что экземпляр Завершение работы установлен на Стоп и нет Прекратить.

Далее, моя рекомендация по сохранению изменений в вашем коде - использовать систему контроля версий, такую ​​как Git или SVN. Если по какой-то причине это не вариант, то следующим наиболее подходящим решением будет хранение изменений кода извне, в S3 или аналогичном сервисе, а затем настройка Данные пользователя на вашем экземпляре EC2, чтобы загрузить последний код из корзины S3. Вы можете получить доступ к Данные пользователя при запуске инстанса EC2, на Настроить детали экземпляра страница. Вам придется расширить Дополнительные сведения внизу.

Видеть: https://stackoverflow.com/questions/39280251/ec2-user-data-to-fetch-s3-object

Видеть: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-dynamic-data-retrieval

Если вы используете том EBS со своим экземпляром, внесенные вами изменения сохраняются после перезагрузки, если вы не удалите том EBS. Хотя более старые типы экземпляров использовали временное хранилище экземпляров, которое стиралось каждый раз, когда вы завершали работу экземпляра, - это ваша проблема?

Если вы хотите распределить свои данные по кластеру или группе автомасштабирования, то EFS - лучший ответ. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEFS.html

Если это небольшое изменение, я рекомендую использовать beanstalk, если вы не хотите разрабатывать систему. Сохраните свой код в системе управления версиями и заархивируйте файлы в S3 с помощью инструмента развертывания EB Beanstalk от Amazon. Затем разверните в своих экземплярах. Если ваши экземпляры выйдут из строя, они будут помечены для повторной подготовки, и вы сможете развернуть приложение. В этом случае вы можете использовать опции для настройки ELB.