diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /examples/rgw/boto3/notification_filters.py | |
parent | Initial commit. (diff) | |
download | ceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-x | examples/rgw/boto3/notification_filters.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/rgw/boto3/notification_filters.py b/examples/rgw/boto3/notification_filters.py new file mode 100755 index 000000000..2687c8b3a --- /dev/null +++ b/examples/rgw/boto3/notification_filters.py @@ -0,0 +1,48 @@ +#!/usr/bin/python + +import boto3 +import sys + +if len(sys.argv) != 4: + print('Usage: ' + sys.argv[0] + ' <bucket> <topic ARN> <notification Id>') + sys.exit(1) + +# bucket name as first argument +bucketname = sys.argv[1] +# topic ARN as second argument +topic_arn = sys.argv[2] +# notification id as third argument +notification_id = sys.argv[3] + +# endpoint and keys from vstart +endpoint = 'http://127.0.0.1:8000' +access_key='0555b35654ad1656d804' +secret_key='h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q==' + +client = boto3.client('s3', + endpoint_url=endpoint, + aws_access_key_id=access_key, + aws_secret_access_key=secret_key) + +# regex filter on the object name and metadata based filtering are extension to AWS S3 API +# bucket and topic should be created beforehand + +topic_conf_list = [{'Id': notification_id, + 'TopicArn': topic_arn, + 'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*'], + 'Filter': { + 'Metadata': { + 'FilterRules': [{'Name': 'x-amz-meta-foo', 'Value': 'bar'}, + {'Name': 'x-amz-meta-hello', 'Value': 'world'}] + }, + 'Tags': { + 'FilterRules': [{'Name': 'foo', 'Value': 'bar'}, + {'Name': 'hello', 'Value': 'world'}] + }, + 'Key': { + 'FilterRules': [{'Name': 'regex', 'Value': '([a-z]+)'}] + } + }}] + +print(client.put_bucket_notification_configuration(Bucket=bucketname, + NotificationConfiguration={'TopicConfigurations': topic_conf_list})) |