将事件发布至NATS
MinIO 支持将 bucket notification 事件发布到 NATS 服务端点。
将 NATS 端点添加到 MinIO 部署
以下过程添加了一个新的 NATS 服务端点以支持 bucket notifications 部署。
先决条件
MinIO mc
命令行工具
此过程使用 mc
命令行工具执行某些操作。
请参阅 mc
的 快速入门 以获取安装说明。
1) 将 NATS 端点添加到 MinIO
你可以通过设置环境变量 或 运行时配置设置来配置一个新的 NATS 服务端点。
MinIO 支持使用 环境变量 来指定 NATS 服务端点及相关配置设置。
minio server
进程将在下一次启动时应用指定的设置。
以下示例代码设置了与配置 NATS 服务端点相关的 所有 环境变量。
最低 要求 变量是: MINIO_NOTIFY_NATS_ADDRESS
和 MINIO_NOTIFY_NATS_SUBJECT
:
export MINIO_NOTIFY_NATS_ENABLE_<IDENTIFIER>="on"
export MINIO_NOTIFY_NATS_ADDRESS_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_SUBJECT_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_USERNAME_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_PASSWORD_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_TOKEN_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_TLS_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_TLS_SKIP_VERIFY_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_PING_INTERVAL_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_QUEUE_DIR_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_QUEUE_LIMIT_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_CERT_AUTHORITY_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_CLIENT_CERT_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_CLIENT_KEY_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_COMMENT_<IDENTIFIER>="<string>"
export MINIO_NOTIFY_NATS_JETSTREAM_<IDENTIFIER>="<string>"
将
<IDENTIFIER>
替换为 NATS 服务端点的唯一描述性字符串。 使用相同的<IDENTIFIER>
值用于所有与新目标服务端点相关的环境变量。 以下示例假设标识符为PRIMARY
。如果指定的
<IDENTIFIER>
与MinIO部署上现有的NATS服务端点匹配,新设置将 覆盖 该端点上任何现有的设置。 使用mc admin config get notify_nats
来查看MinIO部署上当前配置的NATS端点。将
<ENDPOINT>
替换为 NATS 服务端点的主机名和端口。 例如:nats-endpoint.example.com:4222
请参阅 NATS Service for Bucket Notifications 以获取每个环境变量的完整文档说明。
MinIO 支持在运行中的 minio server
进程上使用 mc admin config set
命令
和 notify_nats
配置键添加或更新 NATS 端点。
您必须重新启动 minio server
进程以应用
任何新的或更新的配置设置。
以下示例代码设置与配置 NATS 服务端点相关的
所有 设置。 最小 必需 设置包括:
notify_nats address
和
notify_nats subject
:
mc admin config set ALIAS/ notify_nats:IDENTIFIER \
address="HOSTNAME" \
subject="<string>" \
username="<string>" \
password="<string>" \
token="<string>" \
nats_jetstream="<string>" \
tls="<string>" \
tls_skip_verify="<string>" \
ping_interval="<string>" \
cert_authority="<string>" \
client_cert="<string>" \
client_key="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
将
IDENTIFIER
替换为唯一的描述性字符串 NATS 服务端点。 在此过程中,以下示例假设标识符为PRIMARY
。如果指定的
IDENTIFIER
与 MinIO 部署上现有的 NATS 服务端点匹配,新的设置将 覆盖 该端点上任何现有的设置。 使用mc admin config get notify_nats
命令来查看 MinIO 部署上当前配置的 NATS 端点。将
ENDPOINT
替换为 NATS 服务端点的主机名和端口。 例如:nats-endpoint.example.com:4222
。
请参阅 NATS Bucket Notification Configuration Settings 以获取每个设置的完整文档说明。
1) 重新启动MinIO部署。
您必须重新启动MinIO部署以应用配置更改。
使用 mc admin service restart
命令来重新启动部署。
mc admin service restart ALIAS
将 ALIAS
替换为要重新启动的部署的
别名。
minio server
进程在启动时为每个配置的 NATS 打印一行目标
类似于以下内容:
SQS ARNs: arn:minio:sqs::primary:nats
当配置与关联的NATS部署作为目标的存储桶通知时, 您必须指定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:nats
.
使用 jq 解析 JSON 中的值
复制并运行以下命令,将
ALIAS
替换为部署的 别名。mc admin info --json ALIAS | jq .info.sqsARN
这将返回用于通知的ARN,例如
arn:minio:sqs::primary:nats
。
3) 使用NATS端点作为目标配置存储桶通知
使用 mc event add
命令添加一个新的桶通知事件,
使用配置的NATS服务作为目标的事件:
mc event add ALIAS/BUCKET arn:minio:sqs::primary:nats \
--event EVENTS
将
ALIAS
替换为MinIO部署的 别名。将
BUCKET
替换为您要配置事件的桶的 名称。将
EVENTS
替换为 MinIO 触发通知的 事件 的逗号分隔列表。
使用 mc event ls
命令查看给定通知目标的
所有配置桶事件:
mc event ls ALIAS/BUCKET arn:minio:sqs::primary:nats
4) 验证配置的事件
对您配置了新事件的存储桶执行一个操作,
并检查NATS服务以获取通知数据。
所需操作取决于在配置存储桶通知时指定的
事件类型
。
例如,如果桶通知配置包括 s3:ObjectCreated:Put
事件,
您可以使用 mc cp
命令在
桶中创建一个新对象并
触发通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET
在MinIO部署中更新NATS端点
以下步骤将更新现有的NATS服务端点 以支持MinIO部署中的: 存储桶通知
先决条件
MinIO mc
命令行工具
此过程使用 mc
命令行工具执行某些操作。
请参阅 mc
的 快速入门 以获取安装说明。
1) 列出部署中配置的 NATS 端点
使用 mc admin config get
命令来列出部署中当前配置的NATS服务端点:
mc admin config get ALIAS/ notify_nats
将 ALIAS
替换为 MinIO 部署的 别名。
命令的输出类似于以下内容:
notify_nats:primary password="yoursecret" subject="" address="nats-endpoint.example.com:4222" token="" username="yourusername" ping_interval="0" queue_limit="0" tls="off" tls_skip_verify="off" queue_dir="" streaming_enable="on" nats_jetstream="on"
notify_nats:secondary password="yoursecret" subject="" address="nats-endpoint.example.com:4222" token="" username="yourusername" ping_interval="0" queue_limit="0" tls="off" tls_skip_verify="off" queue_dir="" streaming_enable="on" nats_jetstream="on"
notify_nats
是一个顶级配置键,用于 minio-server-config-bucket-notification-nats。
The address
键指定了给定 notify_nats
键的NATS服务端点。
notify_nats:<IDENTIFIER>
后缀描述了该NATS服务端点的唯一标识符。
请注意,您想要在下一步中更新的NATS服务端点的标识符。
2) 更新 NATS 端点
使用 :mc-cmd:`mc admin config set`命令来设置 NATS 服务端点::
mc admin config set ALIAS/ notify_nats:IDENTIFIER \
address="HOSTNAME" \
subject="<string>" \
username="<string>" \
password="<string>" \
token="<string>" \
tls="<string>" \
tls_skip_verify="<string>" \
ping_interval="<string>" \
nats_jetstream="<string>" \
cert_authority="<string>" \
client_cert="<string>" \
client_key="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
notify_nats address
配置设置是NATS服务端点所需的 最低 配置。
所有其他配置设置都是 可选的。
请参阅 minio-server-config-bucket-notification-nats 以获取完整的NATS配置设置列表。
3) 重新启动MinIO部署。
您必须重新启动MinIO部署以应用配置更改。
使用 mc admin service restart
命令来重新启动部署。
mc admin service restart ALIAS
将 ALIAS
替换为 alias 部署的别名以重新启动。
minio server
进程在启动时为每个配置的NATS目标打印一行,如下所示:
SQS ARNs: arn:minio:sqs::primary:nats
4) 验证更改
对具有事件配置的桶执行操作,并使用更新的NATS服务端点检查NATS服务中的通知数据。
所需操作取决于在配置桶通知时指定的哪些 事件
。
例如,如果桶通知配置包括 s3:ObjectCreated:Put
事件,您可以使用 mc cp
命令在桶中创建一个新对象并触发通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET