Я создаю распределенное приложение в AWS, состоящее из базового ресурса (iam и т. Д.), Хранилища данных, но в основном ресурсов без серверов, таких как lambdas, sns, mongodb, ..
Для развертывания этого через OTAP яРассматривая инструменты AWS для этого, в основном обрисованные в общих чертах здесь .
Это означает, что 1 репо в CodeCommit запустит CodePipeline, который будет иметь эти компоненты в нужных местах (реализуя управление заказами):
- развертывание стеков CF
- с использованием CodeBuild для упаковки (пакет AWS sam) ресурса SAM-> для каждого ресурса SAM один
- с использованием шага сборки для созданиянабор изменений -> один на ресурс SAM
- с использованием шага сборки для выполнения набора изменений -> один на набор изменений
Так что в качестве примера мне понадобится спецификация сборки.yml для каждой лямбды, кроме файла .js для этой лямбды, а также лямбда должна быть построена в шаблоне SAM (его собственный или сгруппированный).Также шаг сборки-изменения-набора и шаг исполнения-изменения-набора для каждого.
Мой вопрос: Если в этой настройке для 1 репо для всего распределенного приложения я изменяю 1крошечная глупая вещь, такая как тайм-аут 1 из множества лямбд, будет ли эта перестройка переустанавливать все элементы приложения?
Если нет , слава богу, но как это работает?CodeCommit отправляет весь архив всех источников в S3, а НЕ только изменения.Таким образом, все элементы будут запущены, и во время развертывания стека (CF или SAM) базовая технология может быть разумной и выполнять только то, что необходимо изменить.Но все же все элементы в CodePipeline (а их много) будут запущены, что неэффективно, если целью является завершение всего развертывания как можно быстрее.
Если да , хорошо, чтобыло бы плохо, и я бы тогда нашел другое решение с пользовательским кодом (лямбда-выражениями) в конвейере, извлекая изменения только из API CodeCommit и делая cretae-change-set и execute.Использование aws sdk с основным недостатком, который уступает управлению заказами, и некоторые вещи, такие как «пакет aws sam», недоступны в sdk.