中文文档

桶通知

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 对象事件上触发通知:

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:*

Selects all s3:ObjectAccessed-prefixed events.

s3:ObjectCreated:*

Selects all s3:ObjectCreated-prefixed events.

s3:ObjectRemoved:*

Selects all s3:ObjectRemoved-prefixed events.

复制事件

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:*

Selects all s3:ObjectTransition-prefixed events.

s3:ObjectRestore:*

Selects all s3:ObjectRestore-prefixed events.

扫描仪事件

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

s3:Scanner:ManyVersions

Scanner 查找具有超过 1,000 个版本的对象。

s3:Scanner:BigPrefix

Scanner 查找具有超过 50,000 个子文件夹的前缀。

Global Events

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

s3:BucketCreated
s3:BucketRemoved

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"
      }
    }
  ]
}
Join Slack 商业支持购买咨询