Swift/RGW S3 API
Overview
This guide details how to use Ceph Object Gateway S3 API for managing object storage on Wavestack.
Specifically, you will learn how to:
- Create a credential for authentication with the Object Gateway S3 API
- Create a bucket/container
- Upload data to the bucket/container
- Access data in the bucket/container
- Manage data in the bucket/container
- Delete a bucket/container
Prerequisites
In order to follow this guide, the following tools have to be installed:
Compatibility
The steps in this guide have been tested with the following versions:
Version | |
---|---|
openstackclient | v6.2.0 |
Access the Wavestack dashboard
You will probably spend most of your time on the command line, but you can also log into the Wavestack dashboard with your Wavestack account if you want to get an overview of the provisioned resources.
About the Wavestack object storage
The Wavestack object store is built using Ceph and distributed across
three availability zones, namely muc5-a, muc5-b and muc5-d. Object
data is thus redundantly replicated across all 3 AZs.
The endpoint for the MUC5 RGW is rgw.muc5.wavestack.de
.
Your buckets (or containers) are bound to your OpenStack project via Keystone RGW Tenants.
You can access the Wavestack object store with either the openstackclient
,
or an S3 API-compatible tool.
For more detailed information on the features of the S3-API, please refer to Ceph S3 Documentation. This includes instructions on how to use advanced features such as object lock/immutability/worm, which can be crucial for implementing compliance and data retention policies.
EC2 Credentials
To access the S3 API with any other client than the Openstackclient like AWS CLI it is necessary to generate an EC2 credential as described here.
For this we utilise the openstackclient:
❯ openstack ec2 credentials create
Creation of Buckets/Containers
To create a bucket/container you run:
❯ openstack container create <containername>
Handling Data in Buckets/Containers
You can handle objects in your containers by utilising the openstackclient. For example you can upload one or many objects with the following command:
❯ openstack object create <container> <file> [<file2> <file3> ...]
In a similar vein you can list data in your container by running the following command:
❯ openstack object list <container>
Download objects to your local machine like so:
❯ openstack object save <container> <object>
If you wish to delete one or multiple object from your container you can delete objects with the following command:
❯ openstack object delete <container> <object> [<object> ...]
Deletion of Buckets/Containers
Should you want to delete one or multiple containers you can utilise the openstackclient for that task as well.
It should be noted that a container is required to be empty before it
can be deleted. Alternatively you can delete the container and content
at the same time by passing the --recursive
flag.
❯ openstack container delete [--recursive] <container> [<container> ...]