You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Add Redis queue support for S3 event notifications (#1189)
* feat: Add Redis queue support for S3 event notifications
- Add Redis client dependency to Cargo.toml
- Extend Amazon S3 source to support Redis pub/sub for event notifications
- Add redis_url and redis_channel configuration options
- Implement RedisContext with async pub/sub support
- Update change_stream to prefer Redis over SQS when both are configured
- Add comprehensive documentation for MinIO Redis setup
- Update Python spec to include Redis configuration fields
This enables MinIO users to receive S3-compatible event notifications
without requiring AWS SQS, addressing issue #599.
* refactor: address maintainer feedback for Redis configuration
- Remove timeout logic in Redis polling to prevent error masking
- Wrap Redis URL and channel in dedicated RedisConfig/RedisNotification structs
- Improve code organization and follow project patterns
Copy file name to clipboardExpand all lines: docs/docs/sources/amazons3.md
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -86,6 +86,33 @@ This is how to setup:
86
86
87
87
AWS's [Guide of Configuring a Bucket for Notifications](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html#step1-create-sqs-queue-for-notification) provides more details.
88
88
89
+
#### (Alternative) Setup Redis for event notifications (MinIO)
90
+
91
+
For MinIO setups that don't use AWS SQS, you can configure MinIO to publish event notifications to Redis:
92
+
93
+
* Configure MinIO to publish events to Redis by setting environment variables:
Replace the values with your Redis server details.
101
+
102
+
* Alternatively, use the `mc` command-line tool:
103
+
```bash
104
+
mc alias set myminio http://minio.example.com:9000 ACCESSKEY SECRETKEY
105
+
mc admin config set myminio/ notify_redis \
106
+
address="redis-endpoint.example.net:6379" \
107
+
key="bucketevents" \
108
+
format="namespace"
109
+
mc admin service restart myminio
110
+
```
111
+
112
+
* Ensure your Redis server is accessible and configured to accept connections from MinIO.
113
+
114
+
MinIO's [Redis Notification Settings](https://min.io/docs/minio/linux/reference/minio-server/settings/notifications/redis.html) documentation provides more details on configuration options.
115
+
89
116
### Spec
90
117
91
118
The spec takes the following fields:
@@ -113,6 +140,17 @@ The spec takes the following fields:
113
140
114
141
:::
115
142
143
+
* `redis_url` (`str`, optional): if provided, the source will receive change event notifications via Redis pub/sub. This is particularly useful for MinIO setups that publish events to Redis instead of SQS.
144
+
145
+
* `redis_channel` (`str`, optional): the Redis channel to subscribe to for event notifications. Required when `redis_url` is provided.
146
+
147
+
:::info
148
+
149
+
Redis pub/sub is preferred over SQS when both are configured. This allows MinIO users to receive S3-compatible event notifications without requiring AWS SQS.
150
+
The Redis implementation expects S3 event notifications in the same JSON format as SQS messages.
151
+
152
+
:::
153
+
116
154
### Schema
117
155
118
156
The output is a [*KTable*](/docs/core/data_types#ktable) with the following sub fields:
0 commit comments