Ресурсы CloudFormation не обновляются при регулярном развертывании

#amazon-web-services #amazon-cloudformation

#amazon-web-services #aws-cloudformation

Вопрос:

У нашей команды возникла проблема, когда кто-то вручную изменил роль IAM для операционного события. Мы надеялись, что перераспределение стека CloudFormation вернет состояние роли IAM, однако изменение вручную все еще было.

Моя рабочая теория заключается в том, что, поскольку arn роли IAM один и тот же, CloudFormation не удаляет и не создает его заново. Это точно? И если да, то как мы можем гарантировать, что все соответствующие ресурсы будут отключены во время развертывания?

Комментарии:

1. Из-за этой проблемы многие организации выбирают terraform вместо cloudformation.

2. Как все прошло. Это все еще неясно?

Ответ №1:

Моя рабочая теория заключается в том, что, поскольку arn роли IAM один и тот же, CloudFormation не удаляет и не создает его заново. Это точно?

CloudFormation (CFN) не проверяет наличие каких-либо изменений, внесенных вне его контроля. Вы можете удалить роль, и CFN все равно «подумает», что эта роль существует.

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

Не все ресурсы поддерживают обнаружение дрейфа, но AWS::IAM::Role есть один, который поддерживает.

И если да, то как мы можем гарантировать, что все соответствующие ресурсы будут отключены во время развертывания?

Не уверен, что вы здесь имеете в виду. Но вы должны вручную исправить смещение. У вас есть четыре варианта:

  1. Верните роль в исходное состояние,
  2. Обновите шаблон, чтобы отразить внешние изменения,
  3. Используйте импорт, чтобы импортировать измененную роль в stack,
  4. Удалите весь стек и создайте новый из исходного шаблона.

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

Комментарии:

1. Вариант 5. Удалите роль из шаблона, выполните развертывание (при этом роль будет удалена), добавьте роль обратно в шаблон, повторно выполните развертывание (при этом роль будет создана в ее первоначальном виде).