Skip to content
NGX Storage Knowledge Base
< All Topics

Getting Started with S3-Compatible Object Storage on NGX Storage

Print

Object storage is a modern data storage architecture designed to handle vast amounts of unstructured data such as media files, backups, and archives. Unlike traditional block or file storage, object storage manages data as independent objects that include the data itself, metadata, and a unique identifier, making it highly scalable and efficient. The S3 protocol, originally developed by Amazon Web Services (AWS), has become the industry standard for accessing and managing object storage. It provides a simple, REST-based API that enables applications to store, retrieve, and organize data seamlessly across on-premises systems and cloud platforms, ensuring broad compatibility and ease of integration.

This guide outlines the steps to configure and use the S3-compatible object storage feature in NGX Storage via both the Web GUI and a sample CLI application.

Configuration on NGX Storage Interface

1- Selecting the Volume to be Served as Object Storage

Note: Ensure that a share (e.g., NgxObjVol) has been created on the system prior to S3 configuration.

2- Starting S3 Service

3- Creating S3 Users

When the user is saved, automatically generated secret key should be saved to a secure location as it will be used to access the buckets. 

4- Creating Buckets

As the final step, buckets should be created as per application requirements. Two buckets will be created for the sample application used in this work : media-bucket and log-bucket.

Note 1: During bucket creation process, related users should be selected to access to the bucket. Furthermore, users can have “read-only” or “read-write” permissions based on the application type. For example, a monitoring-only application can have a user with read-only permission while a log collection application should have “read-write” permission.

Note 2: Buckets can be assigned with a capacity quota during and after creation.

Having two buckets ready, we can now start to use them as object storage endpoints via our CLI application.

Application Configuration

Connection Parameters

Use the following parameters to connect the CLI application to the object storage service:

S3_ENDPOINT_URL=https://10.10.20.22:9000

S3_ACCESS_KEY=NgxObjUsr

S3_SECRET_KEY=bay53y2ISwFOUISee609SYLTVuhTQH407daoLT3p

Note: These parameters will vary depending on your configuration.

Running the Application

The application will upload the images in “media-files” folder in our PC to “media-bucket” and each time a media file is uploaded to media-bucket, a log file will be created in “log-bucket”.

c:\ObjStorTest>python storage_cli.py upload-media
[1] Uploaded media file: file_example_PNG_1MB.png
[1] Created log file: log1.log
[2] Uploaded media file: file_example_PNG_2100kB.png
[2] Created log file: log2.log
[3] Uploaded media file: file_example_PNG_3MB.png
[3] Created log file: log3.log
[4] Uploaded media file: file_example_PNG_500kB.png
[4] Created log file: log4.log
Media upload with logs completed.

We can see that both media files and log files are successfully stored in related buckets.

We can also use NGX Storage Web GUI to monitor the histogram of the files as shown below.

List of S3 functions supported by NGX Storage: 

1- ListBucket
c:\ObjStorTest>python storage_cli.py list-buckets
Buckets:
 - log-bucket
 - media-bucket
2- ListObjects
c:\ObjStorTest>python storage_cli.py list-objects log-bucket 
log1.log | 39 bytes | Last Modified: 2025-08-05 12:06:51.704000+00:00
log2.log | 42 bytes | Last Modified: 2025-08-05 12:06:51.897000+00:00 
log3.log | 39 bytes | Last Modified: 2025-08-05 12:06:52.183000+00:00
log4.log | 41 bytes | Last Modified: 2025-08-05 12:06:52.245000+00:00
3- PutObject
c:\ObjStorTest>python storage_cli.py upload-media
[1] Uploaded media file: file_example_PNG_1MB.png
[1] Created log file: log1.log
[2] Uploaded media file: file_example_PNG_2100kB.png
[2] Created log file: log2.log
[3] Uploaded media file: file_example_PNG_3MB.png
[3] Created log file: log3.log
[4] Uploaded media file: file_example_PNG_500kB.png
[4] Created log file: log4.log
Media upload with logs completed.
4- GetObject
C:\ObjStorTest>python storage_cli.py get file_example_PNG_3MB.png C:\ObjStorTest\3MB_File.png
Downloaded 'file_example_PNG_3MB.png' to 'C:\ObjStorTest\3MB_File.png'
5- DeleteObject
c:\ObjStorTest>python_storage_cli.py delete media-bucket file_example_PNG_1MB.png
Deleted object: 'file_example_PNG_1MB.png' from bucket: 'media-bucket'

COPYRIGHT
© 2025 NGX Teknoloji A.Ş. (NGX Storage). All rights reserved. Printed in the Turkey. Specifications subject to change without notice. No part of this document covered by copyright may be reproduced in any form or by any means-graphic, electronic, or mechanical, including photocopying, recording, taping, or storage in an electronic retrieval system-without prior written permission of NGX Storage. Software derived from copyrighted NGX Storage material is subject to the following license and disclaimer:

THIS SOFTWARE IS PROVIDED BY NGX Storage “AS IS” AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL NGX Storage BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

NGX Storage reserves the right to change any products described herein at any time, and without notice. NGX Storage assumes no responsibility or liability arising from the use of products described herein, except as expressly agreed to in writing by NGX Storage. The use or purchase of this product does not convey a license under any patent rights, trademark rights, or any other intellectual property rights of NGX Storage.

TRADEMARK

NGX Storage and the NGX Storage logo are trademarks of NGX TEKNOLOJI A.Ş. Other company and product names may be trademarks of their respective owners.