桶通知
MinIO存储桶通知允许管理员在发生某些对象或存储桶事件时,向支持的外部服务发送通知。 MinIO 支持存储桶和对象级 S3 事件,类似于 Amazon S3 事件通知 .
支持的通知目标
MinIO支持将事件通知发布到以下目标:
| Target | 描述 | 
|---|---|
| AMQP (RabbitMQ) | 将通知发布到类似 RabbitMQ 的AMQP服务。 请参阅 将事件发布到 AMQP (RabbitMQ) 以获取教程。 | 
| MQTT | 将通知发布到 MQTT 服务。 请参阅 将事件发布至MQTT 教程。 | 
| NATS | 将通知发布到 NATS 服务。 请参阅 将事件发布至NATS 教程。 | 
| NSQ | 将通知发布到 NSQ 服务。 请参阅 将事件发布至NSQ 教程。 | 
| Elasticsearch | 将通知发布到 Elasticsearch 服务。 请参阅 minio-bucket-notifications-publish-elasticsearch 教程。 | 
| Kafka | 将通知发布到 Kafka 服务。 将通知发布到 发布事件到Kafka 服务。 | 
| MySQL | 将通知发布到 MySQL 服务。 请参阅 minio-bucket-notifications-publish-mysql 教程。 | 
| PostgreSQL | 将通知发布到 PostgreSQL 服务。 请参阅 将事件发布至PostgreSQL 教程。 | 
| Redis | 将通知发布到 Redis 服务。 请参阅 将事件发布至Redis 教程。 | 
| webhook | 将通知发布到 Webhook 服务。 请参阅 将事件发布至Webhook 教程。 | 
异步与同步存储桶通知
在 RELEASE.2023-06-23T20-26-00Z 版本加入: MinIO 支持异步(默认)或同步桶通知,适用于 所有 远程目标。
在使用异步交付时,MinIO 在配置的远程目标上触发事件,并且在继续下一个事件之前不会等待响应。 异步桶通知优先发送事件,但如果在传输或处理过程中远程目标出现临时问题,可能会有一些事件丢失。
使用同步交付时,MinIO在配置的远程目标上触发事件,然后等待远程目标确认成功接收后,才继续下一个事件。 同步桶通知优先保证事件交付,但这可能导致事件发送速率较慢和队列填充。
要为 所有配置的远程目标 启用同步桶通知,请使用以下设置之一:
- 将环境变量 - MINIO_API_SYNC_EVENTS设置为- on并重新启动 MinIO 部署。
- 将配置设置 - api.sync_events设置为- on并重新启动 MinIO 部署。
备注
对于同步和异步事件,MinIO 会按远程维护一个队列,用于存储未发送和待处理的事件。
队列限制默认为 100000 。
当队列满时,MinIO 会丢弃新事件。
您可以根据需要增加队列大小,以更好地适应MinIO部署和远程目标的事件发送和处理速率。
使用 QUEUE_LIMIT 环境变量或通知方法的配置设置来修改此限制。
对于异步事件,MinIO 最多允许 50000 并发 send 调用。
支持的 S3 事件类型
MinIO桶通知与 Amazon S3事件通知 兼容。 本节列出了所有支持的事件。
对象事件
MinIO 支持在以下 S3 对象事件上触发通知:
指定通配符 * 来选择与某个前缀相关所有事件:
复制事件
MinIO 支持在以下 S3 复制事件上触发通知:
指定通配符 * 来选择所有 s3:Replication 事件:
ILM 过渡事件
MinIO 支持在以下 S3 ILM 转换事件上触发通知:
使用通配符 * 来选择与特定前缀相关所有事件:
扫描仪事件
MinIO 支持在以下 S3 scanner 转换事件上触发通知:
- s3:Scanner:ManyVersions
- Scanner 查找具有超过 1,000 个版本的对象。 
- s3:Scanner:BigPrefix
- Scanner 查找具有超过 50,000 个子文件夹的前缀。 
Global Events
MinIO 支持在以下全局事件上触发通知。 您只能通过 ListenNotification API 来监听这些事件:
Payload schema
All notification payloads use the same overall schema. Depending on the type of notification, some fields may be omitted or have null values.
{
    "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
The following example is a notification for an s3:ObjectCreated:Put event:
{
  "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"
      }
    }
  ]
}
