为MinIO引入Webhooks

为MinIO引入Webhooks

MinIO提供了与一系列后端系统的集成,使您能够为您的项目构建完整的解决方案。该团队最近整合了来自社区的请求请求,以添加Webhook支持,并希望向您介绍一下。

首先,我们将了解Webhooks是什么,它们可以与之连接的一些示例,然后通过一个端到端的示例介绍如何使用MinIO配置Thumbnail生成器。

Webhooks是通过Internet进行API通信的事实上的标准。用技术术语来说,Webhook是服务器应用程序使用带有JSON负载的HTTP POST向另一个系统发送通知的地方。要在自己的应用程序中使用MinIO webhooks,您只需创建一个HTTP / s端点并编辑您的~/.minio/config.json文件。

在这篇文章中,我们将重点介绍一个用例,该用例可用于近实时自动创建缩略图而无需轮询。

其他Webhook与Min IO配合使用

  • 调用AWS Lambda函数

  • 启动持续集成(CI)

  • 通过Slack,Flowdock或HipChat通知您的团队

Webhooks的好处

直到最近,通过HTTP从MinIO获取事件的唯一方法是轮询,这意味着在计算机上创建一个长期运行的任务以循环检查新消息。轮询具有其优点,因为它易于设置并且不需要HTTP终结点,但是它也可能浪费资源。

精心设计的API允许其用户在发生事件时实时接收事件流,现在MinIO正式支持:NATS,Kafka,Redis,PostgreSQL和webhooks(HTTP / s)。有关通知范围的更多信息,请查看文档:MinIO Notification docs

用例:缩略图生成器

在继续探索如何配置Webhook端点之前,让我们先讨论一个常见的用例。

假设您有一个团队以全分辨率将照片上传到您的服务器,但是需要将这些照片的大小调整为缩略图以用于在线目录。MinIO开发人员Harsha在Node.js中整理了一个名为Thumbnailer的示例项目。它侦听文件扩展名为“ .jpg”的S3 put事件,然后获取,调整大小并重新上传关联的文件。

1.安装缩略图

打开一个终端,然后为代码创建两个新的存储桶并安装“ thumbnailer”。(你还需要gitnodejs)

$ mc mb myminio/images 
$ mc mb myminio/images-processed
$ git clone https://github.com/minio/thumbnailer/
$ npm install

在开始缩略图代码之前,我们需要在处编辑配置文件config/default.json添加服务器的配置,然后启动代码。

2.启动缩略图

$ NODE_ENV=webhook node thumbnail-webhook.js
Webhook listening on all interfaces at port 3000!

3.为您的Minio Server配置Webhook ARN

MinIO的服务器组件是通过位于的文件配置的~/.minio/config.json -在这里您可以配置支持的队列或通知系统之一。我们将编辑此文件并添加我们的HTTP / s终结点,但首先请确保您正在运行最新版本的MinIO服务器和客户端。

编辑~/.minio/config.json文件并添加以下部分:

"webhook": {
  "1": {
    "enable": true,
    "endpoint": "http://localhost:3000/"
}

可以使用HTTP或HTTPs方案将端点设置为网络或Internet上的任何站点和TCP端口。重新/启动MinIO服务器时,端点必须处于活动状态且可访问。

4.观察实际情况

设置Webhook ARN的通知:

$ mc events add myminio/images arn:minio:sqs:us-east-1:1:webhook — events put — suffix .jpg

在单独的终端中,将.jpg照片上载到您的MinIO实例的图像存储桶中:

$ mc cp san-francisco.jpg myminio/images

请稍等片刻,然后使用mc ls -检查存储桶中的内容-您会在经过图像处理的存储桶中看到一个缩略图。

$ mc ls myminio/images-processed
san-francisco-thumbnail.jpg

交给你

您可能已经在应用程序中消耗了许多Webhook。现在,借助MinIO,您可以实时获取有关S3存储桶中活动的通知。

您可以立即使用Docker测试MinIO:

docker run minio/minio

请访问项目主页以获取更多说明。如果您想了解更多信息或只是想建立联系,请加入以下Slack社区的团队:

http://slack.minio.org.cn/questions

上一篇 下一篇