Изменить файл в EC2 с помощью стека Cloudformation-Update - PullRequest
0 голосов
/ 26 апреля 2018

Я использовал шаблон Cloudformation для создания своего экземпляра EC2. В этом случае есть файл в домашнем каталоге, который я копирую из S3 при создании стека.

Этот файл также хранится локально. Теперь я изменяю этот файл локально и хочу скопировать его на S3 и от S3 до экземпляра EC2.

Я хочу автоматизировать этот процесс с помощью Cloudformation. Так что всякий раз, когда я изменяю этот файл локально, после выполнения стека обновлений он загружает измененный файл в S3 и из S3 в мой экземпляр EC2. Может кто-нибудь помочь, пожалуйста, как это может быть достигнуто?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Мне известен как минимум один способ: настроить EC2 в AutoScaling Group (ASG). Затем, при создании, используйте cfn-init для ваших UserData и попросите его извлечь файл из источников. Используйте политики создания и обновления. При обновлении установите для атрибута WillReplace значение true в AutoScalingReplacingUpdate. При обновлении CloudFormation создаст новую ASG с вашей новой новой копией файла. Если вы сообщите об успешном обновлении, оно удалит предыдущий экземпляр и ASG, предоставив вам неизменную настройку инфраструктуры. Оставьте все позади балансировщика нагрузки, и вы также получите высокодоступное сине-зеленое развертывание.

0 голосов
/ 27 апреля 2018

Одна вещь, которая приходит на ум (учитывая специфику того, что вы пытаетесь сделать в приложении), - это использование ECS вместо EC2.

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

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

Вы создаете образ Docker локально, и ваш специальный файл включается в контейнер. Вы помещаете образ Docker в DockerHub или AWS ECS Registry или куда угодно. Вы обновляете конфигурацию ECS шаблона облачной информации, чтобы использовать тег этого нового образа Docker и обновлять стек. Затем ECS извлекает этот новый образ, и новый контейнер (ы) Docker заменяет старый (и), и в нем будет находиться ваш специальный файл.

...