Уведомления о событиях в MinIO на первый взгляд могут показаться неинтересными, но как только вы используете их возможности, они освещают динамику в ваших сегментах хранилища. Уведомления о событиях — важнейшие компоненты полноценной и эффективной системы хранения объектов. Вебхуки — мой любимый инструмент для интеграции с MinIO . Они подобны швейцарскому ножу в мире событий, предлагая универсальное решение самых разных задач.
Удобный пользовательский интерфейс MinIO обеспечивает бесперебойное обслуживание
В нашем исследовании мы сосредоточимся на развертывании с использованием docker-compose — метода, который предлагает упрощенную и эффективную оркестровку. Этот подход предполагает создание связной среды для MinIO и Flask, обеспечивающей их беспрепятственное взаимодействие. Интегрируя службу MinIO с соответствующими учетными данными и конфигурациями, мы стремимся создать систематический рабочий процесс, который эффективно демонстрирует практическое применение управления событиями сегмента MinIO и реагирования на них.
Как всегда, после того, как мы настроим конфигурации клиента и определим структуру данных ответа, начинается самое интересное. В этой демонстрации будут освещены несколько ключевых аспектов того, как вы можете подключить свой клиент MinIO к приложению Flask, где данные уведомления о событиях могут быть дополнительно обработаны. Мы хотим, чтобы вы чувствовали себя комфортно при разработке собственных систем, управляемых событиями, с помощью MinIO, поэтому воспользуйтесь услугами, которые мы предоставили в разделе
Приготовьтесь погрузиться в мир, где обработка данных — это одновременно искусство и наука, которая стала проще с помощью MinIO. Это возможность внедрять инновации, создавать и революционизировать способы работы ваших приложений с данными.
MinIO и интегрированные сервисы
Интеграция MinIO в
Это руководство выходит за рамки теоретических концепций и предоставляет практические фрагменты исполняемого кода для построения интеграции. Это приглашение раскрыть безграничный потенциал вашего творчества в использовании уведомлений о событиях MinIO.
Закладываем основу для приложения Python с помощью Docker
Начальный этап нашего пути посвящен использованию возможностей контейнеризации Docker для создания надежной среды приложений Python. Наш подход основан на развертывании с помощью Docker-compose — метода, выбранного из-за его простоты и эффективности. Этот выбор предназначен для широкого круга разработчиков, которые отдают предпочтение простоте использования и быстрому развертыванию, обеспечивая при этом высокий уровень функциональности.
Используя Docker-compose, мы создаем удобную для пользователя настройку на основе конфигурации. Эта среда идеально подходит для тех, кто хочет быстрого развертывания, не жертвуя глубиной возможностей своего проекта. Он обеспечивает простой путь для интеграции расширенных функций веб-перехватчика и точной настройки параметров MinIO в соответствии с конкретными требованиями вашего проекта.
Каждый шаг, который мы предпринимаем в создании этой среды, имеет решающее значение. Речь идет не только о запуске и работе служб; речь идет о понимании и использовании компонентов для создания комплексной системы. Разработка собственных систем может стать искрой, которая зажжет ваши инновации, улучшит вашу общую стратегию управления данными и в конечном итоге превратит ваши необработанные данные в полезную и полезную информацию.
Развертывание MinIO и интегрированных сервисов
Развертывание с помощью Docker-Compose: приложение Flask и MinIO
Мы начнем с настройки приложения Python и его среды. Это включает в себя развертывание MinIO с помощью Docker Compose и сервисов, которые необходимо интегрировать. Чтобы настроить MinIO с помощью приложения Flask, мы будем использовать команду git
для клонирования репозитория minio/blog-assets в вашу локальную среду:
git clone https://github.com/minio/blog-assets.git cd flask-webhook-event-notifications docker-compose up
Это позволит клонировать
Структура каталогов
В этой структуре docker-compose описаны две службы и соответствующие им переменные конфигурации. Для целей визуализации я представил здесь древовидное представление желаемой структуры каталогов:
/flask-webhook-event-notifications ├── Dockerfile ├── app │ └── main.py └── docker-compose.yaml
Настройка вебхуков в MinIO
Настроить веб-перехватчик в MinIO можно различными способами: с помощью пользовательского интерфейса, с помощью mc
(клиентской утилиты MinIO) или с помощью сценариев на различных языках программирования.
MinIO поддерживает
Настройка MinIO для их использования
Понимание структуры данных уведомлений о событиях MinIO
Уведомления о событиях S3 от MinIO включают в себя
Ключ : уникальный идентификатор объекта в сегменте.
eTag : идентификатор версии объекта для обеспечения целостности и контроля версий.
Размер : Размер объекта в байтах, указывающий его масштаб.
Секвенсор : гарантирует обработку событий в той последовательности, в которой они произошли.
Тип содержимого : Тип носителя объекта, определяющий способ обработки или отображения файла.
Пользовательские метаданные : определяемые пользователем метаданные, прикрепленные к объекту, обеспечивающие дополнительный контекст.
Детали ковша :ARN (название ресурса Amazon) : уникальный идентификатор сегмента в AWS.Имя : имя сегмента, в котором хранится объект.Личность владельца : Информация о владельце ведра.
s3SchemaVersion : указывает версию используемой схемы уведомления о событиях S3.
Ид конфигурации : Идентификатор конкретной конфигурации уведомлений, вызвавшей это событие.
Эта структура особенно эффективна для
Настройка MinIO для веб-перехватчиков и операций, управляемых событиями
После развертывания docker-compose.yaml , описанного выше, продолжайте использовать клиент MinIO, mc
, утилиту командной строки. Эта настройка включает в себя создание псевдонима в MinIO, настройку конечной точки и настройку уведомлений сегмента.
Мы будем работать внутри интерактивного терминала для контейнера «минио» , который мы можем создать, выполнив одну команду:
docker exec -it minio /bin/sh
Причина запуска команд mc из этой оболочки заключается в том, что в образе Docker minio/minio уже установлен и готов к работе mc
.
Внутри интерактивного терминала контейнера процесс настройки MinIO для уведомлений о событиях с помощью клиента MinIO (mc) включает в себя следующие ключевые шаги:
Настройка псевдонима MinIO : Первый шаг включает создание псевдонима для вашего сервера MinIO с помощью клиента MinIO (mc). Этот псевдоним представляет собой ярлык вашего сервера MinIO, позволяющий вам легко выполнять дальнейшие команды mc без повторного указания адреса сервера и учетных данных для доступа. Этот шаг упрощает управление вашим сервером MinIO через клиент.
mc alias set myminio http://localhost:9000 minio minio123
Добавление конечной точки Webhook в MinIO : Настройте новую конечную точку службы веб-перехватчика в MinIO. Эта настройка выполняется с использованием либо переменных среды, либо параметров конфигурации среды выполнения, где вы определяете важные параметры, такие как URL-адрес конечной точки, дополнительный токен аутентификации для безопасности и клиентские сертификаты для безопасных соединений.
mc admin config set myminio notify_webhook:1 endpoint="http://flaskapp:5000/minio-event" queue_limit="10"
Перезапуск развертывания MinIO : после настройки параметров перезапустите развертывание MinIO, чтобы изменения вступили в силу.
mc admin service restart myminio
Ожидать:Restart command successfully sent to myminio. Type Ctrl-C to quit or wait to follow the status of the restart process....Restarted myminio successfully in 1 seconds
Настройка уведомлений сегмента : Следующий шаг предполагает использование команды добавления события mc. Эта команда используется для добавления новых событий уведомлений сегмента, устанавливая вновь настроенную службу Webhook в качестве цели для этих уведомлений.
mc event add myminio/mybucket arn:minio:sqs::1:webhook --event put,get,delete
Ожидать:Successfully added arn:minio:sqs::1:webhook
Получение списка событий сегмента с подпиской : Запустите эту команду, чтобы получить список событий, назначенных myminio/mybucket:
minio mc event list myminio/mybucket
Ожидать:arn:minio:sqs::1:webhook s3:ObjectCreated:*,s3:ObjectAccessed:*,s3:ObjectRemoved:* Filter:
Получение списка событий, назначенных сегменту (в формате JSON) : Запустите эту команду, чтобы получить список событий, назначенных myminio/mybucket, в формате JSON:
minio mc event list myminio/mybucket arn:minio:sqs::1:webhook --json
Ожидать:{ "status": "success", "id": "", "event": ["s3:ObjectCreated:","s3:ObjectAccessed:", "s3:ObjectRemoved:*"], "prefix": "", "suffix": "", "arn": "arn:minio:sqs::1:webhook"}
Структура данных уведомления о событии, полученных Flask
В зависимости от сервисов или интеграции, которые вы создаете, вам может потребоваться идентифицировать event_data из вашего приложения Flask, а это требует хорошего понимания данных, которые предоставляет ваше событие.
{ "s3": { "bucket": { "arn": "arn:aws:s3:::mybucket", "name": "mybucket", "ownerIdentity": { "principalId": "minio" } }, "object": { "key": "cmd.md", "eTag": "d8e8fca2dc0f896fd7cb4cb0031ba249", "size": 5, "sequencer": "17A9AB4FA93B35D8", "contentType": "text/markdown", "userMetadata": { "content-type": "text/markdown" } }, "configurationId": "Config", "s3SchemaVersion": "1.0" }, "source": { "host": "127.0.0.1", "port": "", "userAgent": "MinIO (linux; arm64) minio-go/v7.0.66 mc/RELEASE.2024-01-11T05-49-32Z" }, "awsRegion": "", "eventName": "s3:ObjectCreated:Put", "eventTime": "2024-01-12T17:58:12.569Z", "eventSource": "minio:s3", "eventVersion": "2.0", "userIdentity": { "principalId": "minio" }, "responseElements": { "x-amz-id-2": "dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8", "x-amz-request-id": "17A9AB4FA9328C8F", "x-minio-deployment-id": "c3642fb7-ab2a-44a0-96cb-246bf4d18e84", "x-minio-origin-endpoint": "http://172.18.0.3:9000" }, "requestParameters": { "region": "", "principalId": "minio", "sourceIPAddress": "127.0.0.1" } }
Выполнив эти шаги, вы сможете эффективно использовать уведомления о событиях MinIO, значительно автоматизируя процессы обработки данных. Более подробные инструкции и информацию можно найти в документации MinIO на
Если вы заинтересованы в настройке MinIO с PostgreSQL , взгляните на
Оптимизация событий данных с помощью MinIO и PostgreSQL , где я рассмотрел обширную настройку MinIO и управление событиями данных. Эти конфигурации варьируются от использования консоли MinIO для удобного графического интерфейса до инструмента командной строкиmc
для более подробной настройки с использованием сценариев. Сообщение в блоге дополняет ваше понимание темы, подчеркивая важность правильной настройки PostgreSQL в пользовательском интерфейсе MinIO и важность перезапуска сервера MinIO, чтобы изменения вступили в силу.
Разработка веб-перехватчика с Flask для получения уведомлений о событиях
После развертывания нашей среды мы теперь переключаем внимание на интеграцию MinIO с Python, ключевого аспекта нашей системы обработки и обработки данных. Эта интеграция имеет решающее значение для создания целостной экосистемы, в которой MinIO может беспрепятственно сотрудничать с Flask.
Импорт необходимых пакетов
В нашем демонстрационном коде мы тщательно выбираем импорт Python, чтобы гарантировать соответствие функциональности приложения его предполагаемому назначению. Пакет flask
создает инфраструктуру веб-сервера, определяя конечные точки для обработки входящих HTTP-запросов. Затем приложение можно закодировать для обработки уведомлений о событиях MinIO любым желаемым способом.
from flask import Flask, jsonify, request
Этот импорт в совокупности составляет основу приложения, позволяя ему получать и обрабатывать уведомления о событиях MinIO.
Приложение Flask и конечная точка обработки событий в Python
Создается экземпляр приложения Flask, и настраивается конечная точка для обработки запросов POST по маршруту /minio-event
. Flask — это микровеб-фреймворк на Python, идеально подходящий для настройки веб-приложений и конечных точек API.
app = Flask(__name__) @app.route('/minio-event', methods=['POST']) def handle_minio_event(): event_data = request.json app.logger.info(f"Received MinIO event: {event_data}") return jsonify(event_data), 200
Функция handle_minio_event
в приложении Flask обрабатывает запросы POST, содержащие данные о событии MinIO, и возвращает event_data
, полученное из уведомления о событии MinIO.
Этот подход облегчает обработку и реагирование на события хранилища в реальном времени, обеспечивая динамическое взаимодействие между системой хранения MinIO и приложением Flask.
Интеграция сервисов с событиями сегмента MinIO с помощью сценариев Python
В этом сообщении блога MinIO и Python используются в среде Docker, чтобы продемонстрировать мощь и гибкость уведомлений о событиях корзины MinIO, а также демонстрирует стратегический подход к созданию масштабируемых и эффективных приложений, управляемых событиями.
Использование Docker с его технологией контейнеризации позволяет таким компонентам, как MinIO и Flask, работать независимо, но слаженно. Конечно, эта контейнерная облачная установка сводит к минимуму конфликты и зависимости, подчеркивая важность Docker и контейнеров Docker в современной архитектуре программного обеспечения.
Завершая наше исследование уведомлений о событиях веб-перехватчика MinIO, я убежден, что синергия динамического языка программирования и огромной силы MinIO представляет собой беспрецедентный набор инструментов. Это сочетание открывает путь к безграничным возможностям в разработке приложений. Это дает нам возможность не только внедрять инновации и оптимизировать, но и расширять наши возможности с поразительной эффективностью и адаптируемостью.
Это руководство продемонстрировало простоту и эффективность разработки API с использованием Python, заложив прочную основу для постоянных инноваций и удовлетворения постоянно меняющихся требований. Это подчеркивает адаптируемость, необходимую для дальнейшего развития как в управлении данными, так и в развитии разработки приложений. Этот подход — не просто методология; это путь к обеспечению будущего наших технологических начинаний.