У меня есть S3 bucket как ресурс в моем шаблоне CloudFormation. С DeletionPolicy
установленным на Retain
. Это работает, как и ожидалось, при удалении стека оно действительно сохраняет корзину. Тем не менее, когда я пытаюсь создать стек снова, создание завершается неудачно при попытке создать тот же сегмент снова, с сообщением об ошибке с жалобой на то, что он уже существует.
Что мне нужно добавить в мой шаблон CloudFormation, чтобы он не пытался воссоздать ресурс, который уже существует?
Соответствующий фрагмент моего шаблона выглядит следующим образом:
"Resources": {
"SomeS3Bucket" : {
"Type" : "AWS::S3::Bucket",
"DeletionPolicy" : "Retain",
"Properties": {
"BucketName": "SomeS3Bucket"
}
}
Ответы:
Один из подходов заключается в добавлении входного параметра в шаблон CloudFormation, чтобы указать, что следует использовать существующий сегмент.
Используйте условия Condition в шаблоне, чтобы создать сегмент, только если параметр указывает, что он необходим.
источник
CloudFormation использует теги с префиксом «aws:», чтобы отслеживать, какие ресурсы связаны с какими записями, в какие стеки - это «живое» состояние, которое оно использует для сравнения с шаблоном, прежде чем решить, что добавить / удалить / обновить.
Как пользователь, вы не можете добавлять, редактировать или удалять такие теги.
Так что, если ваши существующие ресурсы не имеют этих тегов или не имеют правильных значений для этих тегов, то они не считаются частью нового стека, и я не вижу способа изменить это.
источник
Я тоже пытаюсь автоматизировать это, так как кажется, что это невозможно сделать только с помощью шаблона Cloudformation. Процесс, о котором я думаю, будет:
temp-$originalbucketname
$originalbucketname
temp-$originalbucketname
Это очень сложный процесс, в зависимости от размера корзины это может занять несколько часов, так как большинство шагов - это O (n) с количеством ключей.
Вы могли бы подумать, что Cloudformation - это базовый уровень автоматизации AWS, но я думаю, что это просто (довольно ограниченный) монстр, объединяющий византийские API для всех своих сервисов.
источник