Где хранить общедоступные данные и как их развернуть с GitHub

Я работаю над своим проектом, который размещен на экземпляре AWS EC2. Я использовал CodeDeploy для развертывания приложения из GitHub в EC2. Но я хочу хранить общедоступные данные в виде таблиц стилей, JS, изображений и т. д. на S3. Возможно ли развернуть приложение на EC2 и S3 за один шаг? Или я должен поместить все файлы только в экземпляр EC2?

Я два дня изучал документацию AWS по Elastic Beanstal, CodeDeploy, CodePipeline, Ops Works и другим, но запутался.


person Community    schedule 11.09.2015    source источник


Ответы (2)


Похоже, вы хотите иметь два шага в своем развертывании. В одном вы обновляете свои статические ресурсы в S3, а в другом — обновляете свои серверы и динамический контент в экземплярах EC2.

Вот несколько вариантов:

  1. Поскольку они статичны, просто попросите каждый хост EC2 загрузить ресурсы S3 в вашу корзину в виде скрипта BeforeInstall. Вам нужно будет включить статический контент как часть вашего пакета, который вы используете с CodeDeploy.
  2. Используйте алгоритм выбора лидера, чтобы выполнить (1) с одного хоста. Вы можете развернуть что-то вроде Zookeeper как часть развертывания CodeDeploy.
  3. Загрузите свои статические ресурсы отдельно от развертывания CodeDeploy. Вы можете рассмотреть CodePipeline как решение для более сложного многоэтапного развертывания (которое может использовать CodeDeploy для развертывания вашего сервера).

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

person Jonathan Turpie    schedule 11.09.2015
comment
Немного опоздал на вечеринку, но это может иметь отношение к делу. не перезаписывая ресурсы S3: stackoverflow.com/a/27934256/1214598 — просто публикуйте новые ресурсы в S3 в папках с разными именами версий - person Julian Laval; 20.01.2016

Я не буду усложнять. Все файлы в EC2 буду класть включая CSS и JS by CodeDeploy с GitHub, ибо простого и идеального решения для этого нет.

person Community    schedule 11.09.2015