Почему CloudFormation заменяет ресурс при добавлении тегов ресурсов?

#amazon-web-services #terraform #amazon-cloudformation #aws-cdk

Вопрос:

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

В моем случае другая команда использует terraform для добавления ресурсов тегов с общими тегами, а моя команда использует CloudFormation для обновления тегов для конкретных приложений. Вызывает ли это замену…? Кроме того, это происходило только для ограниченных ресурсов, таких как группы безопасности.

Кто-нибудь знает что-нибудь об этой проблеме?

Ответ №1:

Cloudformation — это Ревнивый инструмент-другими словами, если он не контролирует ресурс полностью, он перезапишет изменения, предполагая, что изменения находятся в том месте, которое, по его мнению, необходимо обновить.

Чтобы стеки CloudFormation не выполняли ненужную работу, они генерируют наборы изменений, указывающие, какие ресурсы нуждаются в обновлении/перестройке/и т.д. Если вы ничего не измените в шаблоне (или в стеке cdk), набор изменений не обновит этот ресурс, так как ничего менять не нужно. В зависимости от ресурса (и он варьируется от службы к службе) иногда изменения, внесенные вне контроля CloudFormation (либо другими службами, такими как Terraform, либо изменениями вручную в консоли — оба из которых называются «Дрейфом»), не перезаписываются обновлением стека (наиболее распространенным, о котором я могу думать, является шлюз API — добавление / удаление ресурсов или методов не всегда выполняется повторно путем повторного развертывания стека.

Однако для таких вещей, как теги, да — он перезапишет любые изменения, внесенные в него в любое время, и повторно применит теги с момента развертывания — (опять же, в зависимости от службы) часто, даже если для данного ресурса нет других изменений для развертывания. Я подозреваю, что причина этого кроется в том, как AWS использует теги на серверной части для сортировки и поиска ресурсов.

Ваш лучший выбор — выбрать одну услугу и сделать с ней все возможное.

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

1. Спасибо! Я понимаю. Я подумаю о том, чтобы выбрать один из них, чтобы избежать подобных вещей.

Ответ №2:

Каждый из этих двух инструментов перезапишет теги, созданные другим. Вы можете настроить Terraform для игнорирования определенных тегов, однако я не уверен, что вы можете настроить CloudFormation для игнорирования любых тегов. Я думаю, что CloudFormation всегда будет удалять теги, которыми он не управляет. В целом, это не будет хорошо работать, используя как CloudFormation, так и Terraform для управления одними и теми же ресурсами.