#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()
.