将事件发布至MQTT
MinIO 支持将 bucket notification 事件发布到 MQTT 服务器/代理端点。
将 MQTT 端点添加到 MinIO 部署
以下过程添加了一个新的 MQTT 服务端点以支持 bucket notifications 部署。
先决条件
MQTT 3.1 或 3.1.1 服务器/代理
此过程假定已存在一个 MQTT 3.1 或 3.1.1 版本的服务器/代理(broker), MinIO 部署可以与之连接。 请参阅 mqtt.org 软件列表 以获取一系列 MQTT 兼容 的服务器/代理(brokers)。
如果 MQTT 服务需要身份验证,你 必须 在配置过程中提供适当的用 户名和密码,以授予 MinIO 访问该服务 的权限。
MinIO mc
命令行工具
此过程使用 mc
命令行工具执行某些操作。
请参阅 mc
的 快速入门 以获取安装说明。
1) 将 MQTT 端点添加到 MinIO
你可以通过设置环境变量 或 运行时配置设置 来配置一个新的 MQTT 服务端点。
MinIO 支持使用 环境变量
来指定 MQTT 服务端点及相关
配置设置。
当您设置环境变量后,minio server
进程将在下一次启动时
应用这些设置。
以下示例代码设置了与配置 MQTT 服务端点相关的 所有 环境变量。 最低 要求 变量是:
MINIO_NOTIFY_MQTT_ENABLE
MINIO_NOTIFY_MQTT_BROKER
MINIO_NOTIFY_MQTT_TOPIC
MINIO_NOTIFY_MQTT_USERNAME
Required if the MQTT server/broker enforces authentication/authorizationMINIO_NOTIFY_MQTT_PASSWORD
Required if the MQTT server/broker enforces authentication/authorization
export MINIO_NOTIFY_MQTT_ENABLE_<IDENTIFIER>="on"
export MINIO_NOTIFY_MQTT_BROKER_<IDENTIFIER>="ENDPOINT"
export MINIO_NOTIFY_MQTT_TOPIC_<IDENTIFIER>="TOPIC"
export MINIO_NOTIFY_MQTT_USERNAME_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_PASSWORD_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_QOS_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_KEEP_ALIVE_INTERVAL_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_RECONNECT_INTERVAL_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_QUEUE_DIR_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_QUEUE_LIMIT_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_MQTT_COMMENT_<IDENTIFIER>="<string>"
将
<IDENTIFIER>
替换为 MQTT 服务端点的唯一 描述性字符串。 使用相同的<IDENTIFIER>
值 用于所有与新MQTT服务端点相关的环境变量。 以下示例假设标识符为PRIMARY
。如果指定的
<IDENTIFIER>
与MinIO部署上现有的 MQTT服务端点匹配,新设置将 覆盖 该端点上 任何现有的设置。 使用mc admin config get notify_mqtt
来查看MinIO部署上当前配置的MQTT端点。将
<ENDPOINT>
替换为MQTT服务端点的URL。 例如:tcp://hostname:port
将
TOPIC
替换为MinIO关联到服务器/代理发布的 事件的MQTT主题。
请参阅 MQTT Service for Bucket Notifications 以获取每个环境变量的完整文档说明。
MinIO 支持在运行中的 minio server
进程上使用 mc admin config set
命令
和 notify_mqtt
配置键添加或更新 MQTT 端点。
您必须重新启动 minio server
进程以应用
任何新的或更新的配置设置。
以下示例代码设置与配置 MQTT 服务端点相关的 所有 设置。 对于 MQTT 服务器/代理端点, 以下配置设置是 最小 必需的:
broker
topic
username
如果 MQTT 服务器/代理强制执行身份验证/授权,则为必需password
如果 MQTT 服务器/代理强制执行身份验证/授权,则为必需
mc admin config set ALIAS/ notify_mqtt:IDENTIFIER \
broker="ENDPOINT" \
topic="TOPIC" \
username="username" \
password="password" \
qos="<integer>" \
keep_alive_interval="60s|m|h|d"
reconnect_interval="60s|m|h|d"
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
将
IDENTIFIER
替换为唯一的描述性字符串 MQTT 服务端点。此过程中的以下示例 假设标识符为PRIMARY
。如果指定的
IDENTIFIER
与 MinIO 部署上现有的 MQTT 服务端点匹配,新的设置将 覆盖 该端点上任何现有的设置。 使用mc admin config get notify_mqtt
命令来查看 MinIO 部署上当前配置的 MQTT 端点。将
ENDPOINT
替换为 MQTT 服务端点的 URL。 例如:tcp://hostname:port
将
TOPIC
替换为 MinIO 关联到服务器/代理的事件 发布的 MQTT 主题。
请参阅 MQTT Bucket Notification Configuration Settings 以获取每个设置的完整文档说明。
2) 重新启动MinIO部署。
您必须重新启动MinIO部署以应用配置更改。
使用 mc admin service restart
命令来重新启动部署。
mc admin service restart ALIAS
将 ALIAS
替换为要重新启动的部署的
别名。
minio server
进程在启动时为每个配置的 MQTT 打印一行目标
类似于以下内容:
SQS ARNs: arn:minio:sqs::primary:mqtt
当配置与关联的MQTT部署作为目标的存储桶通知时, 您必须指定ARN资源。
Identifying the ARN for your bucket notifications
在创建端点之前,您定义了 <IDENTIFIER>
以便为您的存储桶通知分配目标ARN。
以下是返回部署上配置的ARNs的步骤:
识别之前创建的ARN,请查找您指定的 <IDENTIFIER>
。
查看 JSON 输出
复制并运行以下命令,将
ALIAS
替换为部署的 别名。mc admin info --json ALIAS
在JSON输出中,查找键
info.sqsARN
。您需要的ARN是匹配您指定的
<IDENTIFIER>
的该键的值。例如,
arn:minio:sqs::primary:mqtt
.
使用 jq 解析 JSON 中的值
复制并运行以下命令,将
ALIAS
替换为部署的 别名。mc admin info --json ALIAS | jq .info.sqsARN
这将返回用于通知的ARN,例如
arn:minio:sqs::primary:mqtt
。
1) 使用MQTT端点作为目标配置存储桶通知
使用 mc event add
命令添加一个新的桶通知事件,
使用配置的MQTT服务作为目标的事件:
mc event add ALIAS/BUCKET arn:minio:sqs::primary:mqtt \
--event EVENTS
将
ALIAS
替换为MinIO部署的 别名。将
BUCKET
替换为您要配置事件的桶的 名称。将
EVENTS
替换为 MinIO 触发通知的 事件 的逗号分隔列表。
使用 mc event ls
命令查看给定通知目标的
所有配置桶事件:
mc event ls ALIAS/BUCKET arn:minio:sqs::primary:MQTT
4) 验证配置的事件
对您配置了新事件的存储桶执行一个操作,
并检查MQTT服务以获取通知数据。
所需操作取决于在配置存储桶通知时指定的
事件类型
。
例如,如果桶通知配置包括 s3:ObjectCreated:Put
事件,
您可以使用 mc cp
命令在
桶中创建一个新对象并
触发通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET
在MinIO部署中更新MQTT端点
以下步骤将更新现有的MQTT服务端点 以支持MinIO部署中的: 存储桶通知
先决条件
MQTT 3.1 或 3.1.1 服务器/代理端点
这个程序假设已经有一个现有的MQTT 3.1或3.1.1服务器/代理, MinIO部署可以与之建立连接。 请查看 mqtt.org software listing 以获取MQTT兼容服务器/代理的列表。
如果MQTT服务需要身份验证,您 必须 在配置过程中 提供一个合适的用户名和密码, 以授予MinIO访问服务的权限。
MinIO mc
命令行工具
此过程使用 mc
命令行工具执行某些操作。
请参阅 mc
的 快速入门 以获取安装说明。
1) 列出部署中配置的 MQTT 端点
使用 mc admin config get
命令来列出
部署中当前配置的MySQL服务端点:
mc admin config get ALIAS/ notify_mqtt
将 ALIAS
替换为 MinIO 部署的 别名。
命令的输出类似于以下内容:
notify_mqtt:primary broker="tcp://mqtt-primary.example.net:port" password="" queue_dir="" queue_limit="0" reconnect_interval="0s" keep_alive_interval="0s" qos="0" topic="" username=""
notify_mqtt:secondary broker="tcp://mqtt-primary.example.net:port" password="" queue_dir="" queue_limit="0" reconnect_interval="0s" keep_alive_interval="0s" qos="0" topic="" username=""
notify_mqtt
是一个顶级配置键,用于
minio-server-config-bucket-notification-mqtt。
broker
键指定了给定
notify_mqtt 键的MQTT服务器/代理端点。 notify_mqtt:<IDENTIFIER>
后缀描述了该MQTT服务端点的唯一标识符。
请注意,您想要在下一步中更新的MQTT服务端点的 标识符。
2) 更新 MQTT 端点
使用 :mc-cmd:`mc admin config set`命令来设置 MQTT 服务端点:
mc admin config set ALIAS/ notify_mqtt:<IDENTIFIER> \
url="MQTT://user:password@hostname:port" \
exchange="<string>" \
exchange_type="<string>" \
routing_key="<string>" \
mandatory="<string>" \
durable="<string>" \
no_wait="<string>" \
internal="<string>" \
auto_deleted="<string>" \
delivery_mode="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
以下配置设置是MQTT服务器/代理端点所需的 最低 要求:
broker
topic
username
如果MQTT服务器/代理强制执行身份验证/授权,则这是必需的。password
如果MQTT服务器/代理强制执行身份验证/授权,则这是必需的。
所有其他配置设置都是 可选的。 请参阅 minio-server-config-bucket-notification-mqtt 以获取完整的MQTT配置设置列表。
3) 重新启动MinIO部署。
您必须重新启动MinIO部署以应用配置更改。
使用 mc admin service restart
命令来重新启动部署。
mc admin service restart ALIAS
将 ALIAS
替换为要重新启动的部署的
别名。
minio server
进程在启动时为每个配置的MQTT目标打印一行,
如下所示:
SQS ARNs: arn:minio:sqs::primary:mqtt
3) 验证更改
对具有事件配置的桶执行操作,并使用更新的MQTT服务端点
检查MQTT服务中的通知数据。
所需操作取决于在配置桶通知时指定的哪些
事件
。
例如,如果桶通知配置包括 s3:ObjectCreated:Put
事件,
您可以使用 mc cp
命令在
桶中创建一个新对象并
触发通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET