mirror of
https://github.com/ceph/ceph
synced 2024-12-19 01:46:00 +00:00
a7d80da604
example on how to use 'lua scripting' feature to add NATS to the list of bucket notification endpoints depends on PR: #41927 and #42102 Signed-off-by: Matan Breizman <Matan.Brz@gmail.com>
3.1 KiB
3.1 KiB
Introduction
This directory contains examples on how to use Lua Scripting together with a NATS Lua client to add NATS to the list of bucket notifications endpoints.
NATS
To test your setup:
-
Install NATS and start a nats-server.
-
Subscribe to the NATS server using a nats subscriber, choosing the topic to be 'Bucket_Notification' (as defined in the script)
nats-sub "Bucket_Notification"
Full documentation for subscribing.
Alternatively, configure the script to point to an existing NATS broker by editing the following part in the script to match the parameters of your existing nats server.
nats_host = '{host}',
nats_port = {port},
Usage
- Upload the script:
radosgw-admin script put --infile=nats_adapter.lua --context=postRequest
- Add the packages used in the script:
radosgw-admin script-package add --package=nats --allow-compilation
radosgw-admin script-package add --package=lunajson --allow-compilation
radosgw-admin script-package add --package='lua-cjson 2.1.0-1' --allow-compilation
- Restart radosgw.
- create a bucket:
s3cmd --host=localhost:8000 --host-bucket="localhost:8000/%(bucket)" mb s3://mybucket
- upload a file to the bucket and make sure that the nats server received the notification
s3cmd --host=localhost:8000 --host-bucket="localhost:8000/%(bucket)" put hello.txt s3://mybucket
Expected output:
Received on [Bucket_Notification]:
{"Records":[
{
"eventVersion":"2.1",
"eventSource":"ceph:s3",
"awsRegion":"default",
"eventTime":"2019-11-22T13:47:35.124724Z",
"eventName":"ObjectCreated:Put",
"userIdentity":{
"principalId":"tester"
},
"requestParameters":{
"sourceIPAddress":""
},
"responseElements":{
"x-amz-request-id":"503a4c37-85eb-47cd-8681-2817e80b4281.5330.903595",
"x-amz-id-2":"14d2-zone1-zonegroup1"
},
"s3":{
"s3SchemaVersion":"1.0",
"configurationId":"mynotif1",
"bucket":{
"name":"mybucket",
"ownerIdentity":{
"principalId":"tester"
},
"arn":"arn:aws:s3:us-east-1::mybucket1",
"id":"503a4c37-85eb-47cd-8681-2817e80b4281.5332.38"
},
"object":{
"key":"hello.txt",
"size":"1024",
"eTag":"",
"versionId":"",
"sequencer": "F7E6D75DC742D108",
"metadata":[],
"tags":[]
}
},
"eventId":"",
"opaqueData":"me@example.com"
}
]}
Requirements
- Lua 5.3 (or higher)
- Luarocks