存储桶通知
MinIO bucket notifications allow administrators to send notifications to supported external services on certain object or bucket events. MinIO supports bucket and object-level S3 events similar to the Amazon S3 event notifications.Amazon S3 事件通知.
支持的通知目标
MinIO 支持将事件通知发布到以下目标:
目标 |
描述 |
|---|---|
AMQP(RabbitMQ) |
发布通知到 AMQP 服务,例如RabbitMQ. 看发布事件到 AMQP (RabbitMQ)用于教程。 |
MQTT |
发布通知到MQTT服务。 看发布事件到 MQTT用于教程。 |
NATS |
发布通知到NATS服务。 看发布事件到 NATS用于教程。 |
NSQ |
发布通知到NSQ服务。 看发布事件到 NSQ对于教程 |
Elasticsearch |
发布通知到Elasticsearch服务。 看发布事件到 Elasticsearch用于教程。 |
Kafka |
发布通知到Kafka服务。 看发布事件到 Kafka用于教程。 |
MySQL |
发布通知到MySQL服务。 看发布事件到 MySQL用于教程。 |
PostgreSQL |
发布通知到PostgreSQL服务。 看发布事件到 PostgreSQL用于教程。 |
Redis |
发布通知到Redis服务。 看发布事件到 Redis用于教程。 |
webhook |
发布通知到Webhook服务。 看发布事件到Webhook用于教程。 |
异步 vs 同步存储桶通知
版本 RELEASE.2023-06-23T20-26-00Z 中的新功能:MinIO 支持异步(默认)或同步存储桶通知,用于全部远程目标。
通过异步传递,MinIO 将事件发送到配置的远程目标,并且不会不在继续下一个事件之前等待响应。 异步存储桶通知优先发送事件,但存在在传输或处理过程中远程目标出现临时问题时某些事件可能丢失的风险。
在同步传递模式下,MinIO 会向配置的远程目标触发事件,然后等待远程目标确认接收成功后才会继续处理下一个事件。 同步存储桶通知优先保障事件传递的可靠性,但可能降低事件发送速率并导致队列填满的风险。
启用同步存储桶通知所有已配置的远程目标请使用以下任一设置:
设置
MINIO_API_SYNC_EVENTS环境变量on并重启 MinIO 部署。设置
api.sync_events配置设置on并重启 MinIO 部署。
Note
对于同步和异步事件,MinIO 会为每个远程目标维护一个队列,用于存储未发送和待处理的事件。
队列限制默认为100000.
当队列已满时,MinIO会丢弃新的事件。
您可以根据需要增加队列大小,以更好地适应 MinIO 部署和远程目标的事件发送与处理速率。
使用QUEUE_LIMIT环境变量或配置设置,用于修改通知方法的此限制。
对于异步事件,MinIO 允许的最大数量为50000并发send调用。
支持的 S3 事件类型
MinIO 桶通知与Amazon S3 事件通知本节列出了所有支持的事件。
对象事件
MinIO 支持在以下 S3 对象事件上触发通知:
指定通配符*选择与某个前缀相关的所有事件的字符:
复制事件
MinIO 支持在以下 S3 复制事件上触发通知:
指定通配符*选择所有字符s3:Replication事件:
ILM 过渡事件
MinIO 支持在以下 S3 ILM 转换事件上触发通知:
指定通配符*选择与某个前缀相关的所有事件的字符:
Scanner events
MinIO 支持在以下 S3 操作上触发通知:扫描仪transition events:
- s3:Scanner:ManyVersions
扫描仪查找版本数超过1,000的对象。
- s3:Scanner:BigPrefix
扫描仪查找包含超过50,000个子文件夹的前缀。
全球事件
MinIO 支持在以下全局事件上触发通知。 您只能通过以下方式监听这些事件监听通知API:
Payload schema
所有通知负载都使用相同的整体架构。 根据通知类型的不同,某些字段可能会被省略或具有空值。
{
"eventVersion": "string",
"eventSource": "string",
"awsRegion": "string",
"eventTime": "string",
"eventName": "string",
"userIdentity": {
"principalId": "string"
},
"requestParameters": {
"key": "value"
},
"responseElements": {
"key": "value"
},
"s3": {
"s3SchemaVersion": "string",
"configurationId": "string",
"bucket": {
"name": "string",
"ownerIdentity": {
"principalId": "string"
},
"arn": "string"
},
"object": {
"key": "string",
"size": 10000,
"eTag": "string",
"contentType": "string",
"userMetadata": {
"key": "string"
},
"versionId": "string",
"sequencer": "string"
}
},
"source": {
"host": "string",
"port": "string",
"userAgent": "string"
}
}
Example
以下示例是一个通知,用于s3:ObjectCreated:Put事件:
{
"EventName": "s3:ObjectCreated:Put",
"Key": "test-bucket/image.jpg",
"Records": [
{
"eventVersion": "2.0",
"eventSource": "minio:s3",
"awsRegion": "",
"eventTime": "2025-02-06T01:04:31.998Z",
"eventName": "s3:ObjectCreated:Put",
"userIdentity": {
"principalId": "access_key"
},
"requestParameters": {
"principalId": "access_key",
"region": "",
"sourceIPAddress": "192.168.1.10"
},
"responseElements": {
"x-amz-id-2": "dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8",
"x-amz-request-id": "182178E8B36AC9DF",
"x-minio-deployment-id": "2369dcb4-348b-4d30-8fc9-61ab089ba4bc",
"x-minio-origin-endpoint": "https://minio.test.svc.cluster.local"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "Config",
"bucket": {
"name": "test-bucket",
"ownerIdentity": {
"principalId": "access_key"
},
"arn": "arn:aws:s3:::test-bucket"
},
"object": {
"key": "image.jpg",
"size": 84452,
"eTag": "eb52f8e46f60a27a8a1a704e25757f30",
"contentType": "image/jpeg",
"userMetadata": {
"content-type": "image/jpeg"
},
"sequencer": "182178E8B3728CAC"
}
},
"source": {
"host": "192.168.1.10",
"port": "",
"userAgent": "MinIO (linux; amd64) minio-go/v7.0.83"
}
}
]
}