Как добавить группу безопасности к существующему экземпляру EC2 с помощью CloudFormation

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

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

У меня вопрос:

  • Когда я создаю новую группу безопасности с CloudFormation, как я могу добавить ее к существующему экземпляру EC2, не удаляя экземпляр
  • Я видел несколько шаблонов стека в AWS, но у них есть только шаблон для создания нового экземпляра с группой безопасности, поэтому я понятия не имею, как создать стек только для групп безопасности. И если я обновлю стек, применится ли это сразу ко всем экземплярам?
  • Как я могу экспортировать текущие группы безопасности в JSON, чтобы не создавать заново все группы безопасности в CloudFormation?

person Tien Dung Tran    schedule 25.05.2017    source источник


Ответы (2)


Вы не можете.

Шаблоны Amazon CloudFormation могут создавать ресурсы, и эти ресурсы могут ссылаться на другие ресурсы в том же шаблоне. Например, вы можете создать группу безопасности и экземпляр и настроить экземпляр для использования группы безопасности. При создании таких ссылок в шаблоне на ресурсы можно ссылаться по имени (например, SecurityGroup1, Web Server).

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

Например, можно создать инстанс Amazon EC2 в шаблоне CloudFormation и ссылаться на существующую группу безопасности.

Однако вам нужно обратное! вы хотите изменить существующий ресурс, чтобы он указывал на новый ресурс. Например, измените существующий экземпляр, чтобы он указывал на новую группу безопасности. Это невозможно в шаблоне CloudFormation, поскольку он может только создавать ресурсы и настраивать эти ресурсы - он не может изменять ресурсы вне шаблона.

По логике, группы безопасности должны существовать до создания инстанса Amazon EC2, поскольку инстанс связан с группами безопасности.

Экспорт в JSON

Если вы хотите экспортировать существующий ресурс в шаблон CloudFormation (например, экспортировать текущие определения группы безопасности), вы можете использовать:

person John Rotenstein    schedule 25.05.2017
comment
Спасибо вам. поэтому я думаю, что просто создаю группы безопасности с помощью облачной информации, а затем перейду на консоль aws для ручного изменения в каждом случае. После того, как мне нужно что-то изменить в группе безопасности, я отредактирую облачную информацию и обновлю стек. Имеет ли это смысл? - person Tien Dung Tran; 25.05.2017
comment
Да, это правильный путь, учитывая ваши обстоятельства. - person John Rotenstein; 25.05.2017
comment
@JohnRotenstein, кажется, это одно из основных требований. Если я не могу изменить существующие ресурсы с помощью облачной информации, какие преимущества у меня есть по сравнению с ansible или terraform, с помощью которых я могу изменять существующие ресурсы. - person PMat; 20.12.2017
comment
@PMat Вы можете использовать CloudFormation для изменения ресурсов, созданных CloudFormation, просто изменив шаблон / параметры в стеке, в котором изначально был создан ресурс. Но вы не можете использовать CloudFormation для изменения ресурсов, которые были не созданы CloudFormation, поскольку он ничего о них не знает. - person John Rotenstein; 21.12.2017
comment
До сих пор я связал группы безопасности как часть создания экземпляра и балансировщика нагрузки в отдельных шаблонах. Но теперь вы дали представление о том, как создавать группы безопасности и ссылаться на них в разных шаблонах. благодаря тонну. - person Santosh Kumar Arjunan; 05.02.2019

Добавление группы (групп) безопасности не приведет к воссозданию вашего экземпляра, просто это изменит.

Вы можете проверить это:

  • добавить группу безопасности, выполнить набор изменений
  • добавьте эту группу безопасности в свой экземпляр (в том же шаблоне) и снова внесите набор изменений
YourSecurityGroup:
  < enter code here >

YourInstance:
  Properties:
   SecurityGroupIds:
     - !Ref YourSecurityGroup
person Zoltan Szabo    schedule 06.11.2017
comment
Если вы создали уже запущенный экземпляр через CloudFormation, просто обновите список SecurityGroupIds (docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/), и экземпляр не будет уничтожен. Если вы определили группы безопасности в NetworkInterfaces, то при обновлении этого экземпляра будет заменен. - person Kaarel; 26.04.2019