Minio 的事件通知乍一看可能並不令人興奮,但一旦您掌握了它們的力量,它們就可以照亮您桶內發生的事情。 事件通知是全面高效的物件儲存系統的關鍵組成部分。 Webhook 是我個人最喜歡的與 minio 整合的工具。 它們就像事件世界中的瑞士軍刀,為各種挑戰提供通用解決方案。 Minio 的使用者友好型 UI 提供了無縫的服務整合,但在本指南中,我們將更深入地介紹**。 我們將從頭開始在 Python 中構建服務,並使用其客戶端憑據來引導您完成 minio 整合的來龍去脈。 在我們的探索中,我們將重點部署 docker-compose,這是一種提供簡化和高效編排的方法。 這種方法將涉及為 Minio 和 Flask 建立乙個連貫的環境,以便它們可以無縫互動。 通過將 minio 服務與適當的憑據和配置整合,我們的目標是建立乙個系統的工作流,有效地展示管理和響應 minio 儲存桶事件的特定應用程式。 像往常一樣,一旦我們設定了客戶端配置並定義了響應資料的結構,真正的樂趣就開始了。 此演示將重點介紹如何將 minio 客戶端連線到 FLASK 應用程式,在該應用程式中可以進一步處理事件通知資料。 我們希望您能夠自如地開發自己的事件驅動系統,因此請利用我們在 Minio 的 github 頁面上提供的服務,該頁面位於 blog-assets flask-webhook-event-notifications。 準備好潛入乙個資料處理既是藝術又是科學的世界,這一切都變得簡單,這要歸功於 minio。 這是乙個創新、創造和徹底改變應用程式處理資料的方式的機會。
Minio與Kubernetes生態系統的整合證明了其在各種雲技術中的適應性。 Webhook 至關重要,它使開發人員能夠靈活地構建自定義整合,無論是跨不同雲平台管理資料還是設定本地家庭實驗室。 本指南不僅提供了理論概念,還提供了構建整合的實際片段。 這是乙個邀請,讓你在利用minio事件通知時探索你無限的創造潛力。
我們旅程的初始階段致力於利用 Docker 的容器化功能來構建強大的 Python 應用程式環境。 我們的方法側重於使用 docker-compose 進行部署,選擇 docker-compose 是因為它的簡單性和有效性。 此選擇旨在滿足各種開發人員的需求,優先考慮易用性和快速部署,同時確保高水平的功能。 使用 docker-compose,我們建立了乙個使用者友好的、基於配置的設定。 這種環境非常適合那些希望在不犧牲專案能力的情況下進行深度快速部署的人。 它提供了整合高階 webhook 功能和微調 Minio 設定的直接途徑,以滿足您專案的特定需求。 設定此環境的每一步都至關重要。 這不僅僅是讓服務執行,而是了解和利用各個元件來建立乙個全面的系統。 開發您自己的系統可以成為點燃您的創新的火花,增強您的整體資料管理策略,並最終將您的原始資料轉化為可操作的、有洞察力的資訊。
我們將從設定 Python 應用程式及其環境開始。 這包括使用 docker-compose 部署 minio 和服務進行整合。 為了使用 flask 應用程式設定 minio,我們將使用 git 命令將 minio blog-assets 儲存庫轉殖到您的本地環境:
git clone
cd flask-webhook-event-notifications
docker-compose up
這將從 github 轉殖 minio blog-assets 儲存庫,導航以包含 docker-composeyaml 檔案,然後啟動 minio 和 flask 服務。
此 docker-compose 結構提供了這兩個服務及其各自的配置變數的概述。 為了便於視覺化,我在這裡提供了所需目錄結構的樹檢視:
/flask-webhook-event-notifications
dockerfile
app─main.py
docker-compose.yaml
在 Minio 中配置 Webhook 可以通過多種方式完成,包括使用使用者介面、使用(Minio 客戶端實用程式)或使用 MC 的各種程式語言編寫指令碼。
Minio 支援多種外部事件通知服務,包括:AMQP(RabbitMQ)、MQTT、NATS、NSQ、Elasticsearch、Kafka、MySQL、PostgreSQL、Redis 和 Webhook 服務。
設定 Minio 以利用這些事件通知涉及一系列明確定義的步驟,以確保您的 Minio 例項不僅捕獲而且有效地傳達重要的事件資料,作為應用程式生態系統的互動式響應式部分。
來自 Minio 的 S3 事件通知包括詳細的 JSON 資料結構,這對於全面了解和有效管理事件至關重要。 下面我列出了我從事件資料中找到的一些值:
鍵:儲存桶中物件的唯一識別符號。
etag:用於完整性和版本控制的物件版本識別符號。
大小:物件的大小(以位元組為單位),表示其比例。
sequencer:確保按照事件發生的確切順序處理事件。
contentType:物件的型別,指定檔案的處理或顯示方式。
usermetadata:附加到物件以提供其他上下文的使用者定義元資料。
儲存桶詳細資訊。
ARN(Amazon 資源名稱):AWS 中儲存桶的唯一識別符號。
名稱:儲存物件的儲存桶的名稱。
ownerIdentity:儲存桶擁有者。
S3Schem**ersion:指示使用的 S3 事件通知架構的版本。
ConfigurationId:觸發此事件的特定通知配置的識別符號。
這種結構對於 Flask 應用程式特別有效,因為 Flask 應用程式會系統地記錄、解析和分析與 minio 儲存桶的互動。
部署 docker-compose。YAML,進入 minio 客戶端,即 MC 命令列實用程式。 此設定涉及在 Minio 中建立別名、配置終端節點和設定儲存桶通知。
我們將在“minio”容器的互動式終端中工作,我們可以通過執行單個命令來生成它:
docker exec -it minio /bin/sh
從此 shell 執行 MC 命令的原因是 docker minio minio 映像已安裝 MC 並準備就緒。
進入容器的互動式終端後,使用 minio 客戶端 (MC) 為 minio 配置事件通知的過程涉及以下關鍵步驟:
設定 minio 別名:第一步涉及使用 minio 客戶端 (MC) 為 minio 伺服器建立別名。 此別名是 minio 伺服器的快捷方式,允許您輕鬆執行進一步的 mc 命令,而無需重複指定伺服器的位址和訪問憑據。 此步驟簡化了通過客戶端對 minio 伺服器的管理。
向 Minio 新增 Webhook 端點:在 Minio 中配置新的 Webhook 服務端點。 此設定是使用環境變數或執行時配置設定完成的,您可以在其中定義重要引數,例如終結點 URL、用於安全性的可選身份驗證令牌以及用於安全連線的客戶端證書。
重啟 minio 部署:配置設定後,重啟 minio 部署,確保更改生效。
mc admin service restart myminio
配置儲存桶通知:下一步涉及使用 mc event add 命令。 此命令用於新增新的儲存桶通知事件,將新配置的 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 事件列表 myminio mybucket
期望: arn:minio:sqs::1:webhook s3:objectcreated:,s3:objectaccessed:,s3:objectremoved:* 篩選器:
列出分配給儲存桶的事件(json):執行以下命令,以json格式列出分配給myminio mybucket的事件: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 應用中識別事件資料,這需要充分了解事件提供的資料。
s3": ,"object": ,"configurationid": "config","s3schem**ersion": "1.0","source": ,"awsregion": "","eventname": "s3:objectcreated:put","eventtime": "2024-01-12t17:58:12.569z","eventsource": "minio:s3","eventversion": "2.0","useridentity": ,"responseelements": ,"requestparameters":
通過執行這些步驟,您可以有效地利用 minio 事件通知,並顯著自動化您的資料工作流流程。 有關更詳細的指導和資訊,請參閱有關儲存桶通知以及監控儲存桶和物件事件的 minio 文件。
如果您有興趣使用 PostgreSQL 設定 Minio,請檢視使用 MiniO 和 PostgreSQL 簡化資料事件,其中描述了 Minio 對資料事件的廣泛配置和管理。 這些配置包括使用 minio 控制台提供使用者友好的圖形介面,以及使用 MC 命令列工具進行更詳細、可編寫指令碼的設定。 這篇博文進一步完善了您對本主題的理解,重點介紹了在 Minio UI 中正確配置 PostgreSQL 的重要性,以及重新啟動 Minio 伺服器以使更改生效的重要性。在部署了我們的環境之後,我們現在將重點轉移到Minio與Python的整合上,這是我們資料處理和處理系統的乙個關鍵方面。 這種整合對於建立乙個有凝聚力的生態系統至關重要,Minio 可以在其中與 Flask 無縫協作。
在我們的演示中,我們仔細選擇了 python 匯入,以確保應用程式的功能符合其預期目的。 Flask 包建立 Web 伺服器基礎結構,用於定義終結點以處理傳入的 HTTP 請求。 然後,可以對應用程式進行編碼,以以您想要的任何方式處理 minio 事件通知。
from flask import flask, jsonify, request
這些匯入共同構成了應用程式的基礎,使其能夠接收和處理 minio 事件通知。
例項化 flask 應用程式並設定終結點以處理路由的 minio-event 上的 POST 請求。 Flask 是 Python 中的微型 Web 框架,非常適合設定 Web 應用程式和 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: ")
return jsonify(event_data), 200
Flask 應用中的 Handle Minio 事件函式處理包含 Minio 事件資料的 POST 請求,並返回從 Minio 事件通知收到的事件資料請求。
這種方法有助於實時處理和響應儲存事件,從而實現 Minio 儲存系統和 Flask 應用程式之間的動態互動。
這篇博文在 Docker 環境中使用 Minio 和 Python 來演示 Minio 儲存桶事件通知的強大功能和靈活性,並演示了建立可擴充套件、高效、事件驅動型應用程式的戰略方法。
使用 Docker 及其容器化技術使 minio 和 flask 等元件能夠獨立但有凝聚力地工作。 當然,這種容器化的雲原生設定最大限度地減少了衝突和依賴關係,突出了 docker 和 docker 容器在現代軟體架構中的重要性。
在我們對 minio webhook 事件通知的探索結束時,我相信動態程式語言的協同作用和 minio 的強大優勢提供了乙個無與倫比的工具包。 這種配對為應用程式開發的無限機會鋪平了道路。 它不僅使我們能夠進行創新和簡化,而且還使我們能夠以卓越的效率和適應性擴充套件我們的能力。