Cloudformation: предотвратить удаление после обновления на ресурсах замены - PullRequest
0 голосов
/ 17 сентября 2018

В AWS Cloudformation есть специальные ресурсы, которые не могут быть обновлены напрямую. Вместо этого они заменяются командой aws cloudformation update-stack. Это прекрасно работает, если вы не хотите сохранять эти ресурсы после обновления.

В моем примере я хочу сохранить все обновленные версии ресурсов AWS::AutoScaling::LaunchConfiguration для ручного переключения LaunchConfigurations в AutoScalingGroup (для целей тестирования или аварийного отката). Я должен сделать это, потому что пользователи веб-интерфейса не могут использовать Cloudformation, и при этом они не уполномочены сделать это.

Итак, я создал шаблон, который создает / обновляет ресурс LaunchConfiguration, устанавливая пользовательский LaunchConfigurationName с включением текущей даты / времени.
Это работает хорошо, но: после состояния UPDATE_COMPLETE_CLEANUP_IN_PROGRESS старая версия ресурса AWS::AutoScaling::LaunchConfiguration всегда удаляется. Чтобы избежать этого, я попытался настроить политику набора стека:

{
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    },
    {
      "Effect" : "Deny",
      "Action" : "Update:Delete",
      "Principal" : "*",
      "Resource" : "*",
      "Condition" : {
        "StringEquals" : {
          "ResourceType" : ["AWS::AutoScaling::LaunchConfiguration"]
        }
      }
    }  
  ]
}

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html

Update:Delete

    Specifies update actions during which resources are removed. 
    Updates that completely remove resources from a stack template require this action.

результат: ресурс по-прежнему удаляется после обновления AutoScalingGroup (состояние UPDATE_COMPLETE_CLEANUP_IN_PROGRESS).
У вас есть идея, как сохранить старые версии?

1 Ответ

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

Вы можете установить политику удаления на RETAIN, а также изменить логический идентификатор ресурса. Изменение логического идентификатора ресурса приводит к тому, что Cloudformation удаляет старый ресурс (или сохраняет его в соответствии с политикой удаления) и создает новый. Это работает так, потому что облачная информация знает, что вы изменили логический идентификатор. Он видит это как один удаляемый ресурс и один добавляемый.

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