文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

存储桶通知

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 会向配置的远程目标触发事件,然后等待远程目标确认接收成功后才会继续处理下一个事件。 同步存储桶通知优先保障事件传递的可靠性,但可能降低事件发送速率并导致队列填满的风险。

启用同步存储桶通知所有已配置的远程目标请使用以下任一设置:

Note

对于同步和异步事件,MinIO 会为每个远程目标维护一个队列,用于存储未发送和待处理的事件。 队列限制默认为100000.

当队列已满时,MinIO会丢弃新的事件。

您可以根据需要增加队列大小,以更好地适应 MinIO 部署和远程目标的事件发送与处理速率。 使用QUEUE_LIMIT环境变量或配置设置,用于修改通知方法的此限制。

对于异步事件,MinIO 允许的最大数量为50000并发send调用。

支持的 S3 事件类型

MinIO 桶通知与Amazon S3 事件通知本节列出了所有支持的事件。

对象事件

MinIO 支持在以下 S3 对象事件上触发通知:

s3:ObjectAccessed:Get
s3:ObjectAccessed:GetLegalHold
s3:ObjectAccessed:GetRetention
s3:ObjectAccessed:Head
s3:ObjectCreated:CompleteMultipartUpload
s3:ObjectCreated:Copy
s3:ObjectCreated:DeleteTagging
s3:ObjectCreated:Post
s3:ObjectCreated:Put
s3:ObjectCreated:PutLegalHold
s3:ObjectCreated:PutRetention
s3:ObjectCreated:PutTagging
s3:ObjectRemoved:Delete
s3:ObjectRemoved:DeleteMarkerCreated

指定通配符*选择与某个前缀相关的所有事件的字符:

s3:ObjectAccessed:*

选择全部s3:ObjectAccessed带前缀的事件。

s3:ObjectCreated:*

选择全部s3:ObjectCreated带前缀的事件。

s3:ObjectRemoved:*

选择全部s3:ObjectRemoved带前缀的事件。

复制事件

MinIO 支持在以下 S3 复制事件上触发通知:

s3:Replication:OperationCompletedReplication
s3:Replication:OperationFailedReplication
s3:Replication:OperationMissedThreshold
s3:Replication:OperationNotTracked
s3:Replication:OperationReplicatedAfterThreshold

指定通配符*选择所有字符s3:Replication事件:

s3:Replication:*

ILM 过渡事件

MinIO 支持在以下 S3 ILM 转换事件上触发通知:

s3:ObjectRestore:Post
s3:ObjectRestore:Completed
s3:ObjectTransition:Failed
s3:ObjectTransition:Complete

指定通配符*选择与某个前缀相关的所有事件的字符:

s3:ObjectTransition:*

选择全部s3:ObjectTransition带前缀的事件。

s3:ObjectRestore:*

选择全部s3:ObjectRestore带前缀的事件。

Scanner events

MinIO 支持在以下 S3 操作上触发通知:扫描仪transition events:

s3:Scanner:ManyVersions

扫描仪查找版本数超过1,000的对象。

s3:Scanner:BigPrefix

扫描仪查找包含超过50,000个子文件夹的前缀。

全球事件

MinIO 支持在以下全局事件上触发通知。 您只能通过以下方式监听这些事件监听通知API:

s3:BucketCreated
s3:BucketRemoved

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"
      }
    }
  ]
}