Обратный вызов AWS Cloudformation при полном удалении стека

#amazon-web-services #amazon-cloudformation #aws-java-sdk

#amazon-веб-сервисы #amazon-cloudformation #aws-java-sdk

Вопрос:

Я работаю над платформой управления AWS CloudFormation, которая позволяет пользователям запускать, обновлять и удалять стеки в CloudFormation.

При запуске стека я создаю запись в базе данных, чтобы связать ее с шаблоном (набором создаваемых ресурсов) и Клиентом. Пользователи могут вызывать и просматривать последние события, происходящие с их стеком, например «CREATION_IN_PROGRESS», «CREATION_COMPLETED».

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

Обратный вызов, который в настоящее время доступен при выполнении a deleteStack() , уже возвращается после инициализации удаления стека.

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

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

Я ошибаюсь, предполагая это, или у кого-нибудь, читающего это, есть идея или реализация получше?

Любая информация приветствуется.

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

1. Вы не ошибаетесь. Единственный способ узнать, когда стек был удален, — это опросить изменения статуса.

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

3. Похоже, даже через 5 лет (октябрь 2021 года). AWS не предоставляла эту функцию. 🙂

Ответ №1:

Раньше единственным доступным вариантом был самостоятельный опрос, но в выпуске AWS SDK для Java 1.11.25 появился этот com.amazonaws.waiters пакет, обзор и введение см. в разделе Waiters в AWS SDK для Java.

Обратите внимание, что официанты по-прежнему будут проводить опрос под капотом, но они абстрагируются от этой логики, предлагая «удобные» методы API для ожидания с блокировкой run() или с обратным вызовом. ориентированный способ via runAsync() .

Что касается вашего явного варианта использования, вам следует изучить AmazonCloudFormationWaiters.stackDeleteComplete() .