-
Notifications
You must be signed in to change notification settings - Fork 284
/
listen-bucket-notification.js
61 lines (54 loc) · 2.22 KB
/
listen-bucket-notification.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
* MinIO Javascript Library for Amazon S3 Compatible Cloud Storage, (C) 2016 MinIO, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Note that `listenBucketNotification` is only available for MinIO, and not
// Amazon.
const Minio = require('../')
var s3Client = new Minio.Client({
endPoint: '...',
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY'
})
// Start listening for notifications on the bucket, using our arn.
let poller = s3Client.listenBucketNotification('bucket1', 'photos/', '.jpg', ['s3:ObjectCreated:*'])
// Notification will be emitted every time a new notification is received.
// For object creation, here is a sample record:
// { eventVersion: '2.0',
// eventSource: 'aws:s3',
// awsRegion: 'us-east-1',
// eventTime: '2016-08-23T18:26:07.214Z',
// eventName: 's3:ObjectCreated:Put',
// userIdentity: { principalId: 'minio' },
// requestParameters: { sourceIPAddress: '...' },
// responseElements: {},
// s3:
// { s3SchemaVersion: '1.0',
// configurationId: 'Config',
// bucket:
// { name: 'bucket1',
// ownerIdentity: [Object],
// arn: 'arn:aws:s3:::bucket1' },
// object: { key: 'photos%2Fobject.jpg', size: 10, sequencer: '...' } } }
poller.on('notification', record => {
console.log('New object: %s/%s (size: %d)', record.s3.bucket.name,
record.s3.object.key, record.s3.object.size)
// Now that we've received our notification, we can cancel the listener.
// We could leave it open if we wanted to continue to receive notifications.
poller.stop()
})
// Create an object - this should trigger a notification.
s3Client.putObject('bucket1', 'file.jpg', 'stringdata', (err, etag) => {
if (err) throw err
})