ceph/examples/lua/storage_class.md
Curt Bruns bbd7f0dbaf rgw/lua: Example read/write of StorageClass field
Admins may setup different pools for RGW objects and
having the StorageClass field mutable allows the steering
of RGW objects to the proper pools.  This Lua example shows
how a user can modify the StorageClass header when
it is empty on a PUT request and steer objects to different
pools based on size (Request.ContentLength).

Signed-off-by: Curt Bruns <curt.e.bruns@gmail.com>
2021-11-01 19:45:38 -04:00

2.3 KiB

Introduction

This directory contains an example storage_class.lua on how to use Lua Scripting to read and write the Storage Class field of a put request.

Usage - following examples based on vstart environment built in ceph/build and commands invoked from ceph/build

# Create Storage Class
./bin/radosgw-admin zonegroup placement add --rgw-zonegroup default --placement-id default-placement --storage-class QLC_CLASS
# Steer objects in QLC_CLASS to the qlc_pool data pool
./bin/radosgw-admin zone placement add --rgw-zone default --placement-id default-placement --storage-class QLC_CLASS --data-pool qlc_pool
  • Restart radosgw for Zone/ZoneGroup placement changes to take effect.

  • Upload the script:

./bin/radosgw-admin script put --infile=storage_class.lua --context=preRequest
  • Create a bucket and put and object with a Storage Class header (no modification will occur):
aws --profile=ceph --endpoint=http://localhost:8000 s3api create-bucket --bucket test-bucket
aws --profile=ceph --endpoint=http://localhost:8000 s3api put-object --bucket test-bucket --key truv-0 --body ./64KiB_object.bin --storage-class STANDARD
  • Send a request without a Storage Class header (Storage Class will be changed to QLC_CLASS by Lua script):
aws --profile=ceph --endpoint=http://localhost:8000 s3api put-object --bucket test-bucket --key truv-0 --body ./64KiB_object.bin

NOTE: If you use s3cmd instead of aws command-line, s3cmd adds "STANDARD" StorageClass to any put request so the example Lua script will not modify it.

  • Verify S3 object had its StorageClass header added
grep Lua ceph/build/out/radosgw.8000.log

2021-11-01T17:10:14.048-0400 7f9c7f697640 20 Lua INFO: Put_Obj with StorageClass:
2021-11-01T17:10:14.048-0400 7f9c7f697640 20 Lua INFO: No StorageClass for Object and size >= threshold: truv-0 adding QLC StorageClass

Requirements

  • Lua 5.3