Как разбить существующий стек CloudFormation на отдельные вложенные стеки, перемещая существующие ресурсы во вложенный стек - PullRequest
0 голосов
/ 24 сентября 2018

Проблема:

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

Чтобы указать больше ресурсов, нам нужно разделить наш шаблон на несколько шаблонов, используя Nested Stacks ,Мы оцениваем лучший подход к разбивке шаблона.

Наш подход:

Мы создали вложенный стек из нашего основного стека и удалили некоторые ресурсы из основногои добавили их в новый вложенный стек.

Ошибка:

Мы обнаружили ошибку во вложенном стеке, например

Ресурс уже существует вКорневой стек

1. Можно ли разбить наш основной шаблон на вложенные стеки с существующими ресурсами?т.е. переместить наши существующие ресурсы под вложенный стек?или нам просто нужно добавить новые ресурсы во вложенный стек и сохранить наш основной стек как он есть с существующими ресурсами?

2. Мы уже достигли ограничения в 200 ресурсов, поэтому трудно добавить больше вложенныхСтеки также.

Ресурсы в шаблоне,

У нас примерно 100 сигналов CloudWatch, таблиц DynamoDB, Lambda, ES, KMS, S3 и других ресурсов, мы хотимt разделить их на вложенные стеки, специфичные для типов ресурсов.

1 Ответ

0 голосов
/ 24 сентября 2018

Вы не можете «включать» существующие ресурсы в новые стеки CloudFormation.Если вы перемещаете ресурсы во вложенный стек и добавляете вложенный стек в свой корневой шаблон, он сначала попытается создать новые ресурсы во вложенном стеке, а затем удалить старые ресурсы в корневом стеке как часть процесса очистки.Таким образом, если новые ресурсы имеют одинаковые имена (и повторяющиеся имена не допускаются), обновление не будет выполнено.

Решение этого состоит в том, чтобы развернуть стек в два этапа, сначала удалив ресурсы из корневого стека, а затем добавив их во вложенный стек.Это приведет к тому, что эти ресурсы будут отсутствовать в вашей среде в течение короткого времени, но если вы сохраните малые миграции, это займет всего несколько минут.

Ресурсы, содержащие состояние (например, DynamoDB, KMS, S3,и т. д.) гораздо сложнее выполнить миграцию таким образом, поскольку данные, очевидно, теряются при их удалении.Вам либо нужно выполнить полный процесс миграции, создать новый ресурс с другим именем во вложенном стеке, перенастроить данные, обновить приложение для использования нового ресурса и, наконец, удалить старый ресурс, либо принять, что это, вероятно, слишкоммного работы для внутреннего рефакторинга и оставить эти ресурсы в корневом шаблоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...