mirror of https://github.com/ceph/ceph
102 lines
3.1 KiB
Markdown
102 lines
3.1 KiB
Markdown
|
# Introduction
|
||
|
|
||
|
This directory contains examples on how to use [Lua Scripting](https://docs.ceph.com/en/latest/radosgw/lua-scripting/) together with a [NATS Lua client](https://github.com/dawnangel/lua-nats) to add NATS to the list of bucket notifications endpoints.
|
||
|
|
||
|
## NATS
|
||
|
To test your setup:
|
||
|
* Install [NATS](https://docs.nats.io/nats-server/installation) and start a nats-server.
|
||
|
|
||
|
* Subscribe to the NATS server using a [nats subscriber](https://github.com/nats-io/go-nats-examples/tree/master/patterns/publish-subscribe), choosing the topic to be 'Bucket_Notification' (as defined in the [script]())
|
||
|
|
||
|
|
||
|
```bash
|
||
|
nats-sub "Bucket_Notification"
|
||
|
```
|
||
|
|
||
|
|
||
|
[Full documentation for subscribing](https://docs.nats.io/nats-server/clients).
|
||
|
|
||
|
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]():
|
||
|
|
||
|
```bash
|
||
|
radosgw-admin script put --infile=nats_adapter.lua --context=postRequest
|
||
|
```
|
||
|
* Add the packages used in the script:
|
||
|
|
||
|
```bash
|
||
|
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
|