Using API
E2E Object Storage supports a range of REST endpoints for seamless integration with external applications and plugins.
Getting Started
Object Storage is capable of supporting any API SDK that’s S3 compliant, but we recommend using Minio SDKs for the best experience.
In this article, we will use Python to demonstrate API examples, but you may use other languages as per your comfort.
Pre-requisites
- You will need Python 2.7 or higher.
- You will need a storage bucket and credentials (access/secret key).
- Install minio python sdk:
pip install minio
Initialize Client
Endpoint URLs
-
Delhi-NCR :
objectstore.e2enetworks.net
-
Mumbai :
mum-objectstore.e2enetworks.net
from minio import Minio
eos_client = Minio('<<endpoint_url>>',
access_key='<<enter access key here>>',
secret_key='<<enter secret key here>>',
secure=True)
List objects from a bucket
# method: list_objects
# params: bucket_name, prefix (object path prefix), recursive (set True for directories)
objects = eos_client.list_objects('<<bucketname>>',
prefix='<<enter path here. e.g. / for root>>',
recursive=False)
for obj in objects:
print(obj.bucket_name, obj.object_name, obj.last_modified, obj.size, obj.content_type)
Get Object
# method: get_object
# params: bucket_name, object name (object full path)
from minio.error import ResponseError
try:
data = eos_client.get_object('bucketname', 'objectname')
with open('test-file', 'wb') as file_data:
for d in data.stream(32*1024):
file_data.write(d)
except ResponseError as err:
print(err)
Put Object
# method: get_object
# params: bucket_name, object name (object full path),
# file pointer, size of file, content type
from minio.error import ResponseError
try:
with open('/local_dir/test-file.csv', 'rb') as file_data:
file_stat = os.stat('/local_dir/test-file.csv')
eos_client.put_object('bucketname', 'objectname',
file_data, file_stat.st_size,
content_type='application/csv')
except ResponseError as err:
print(err)
Remove Object
# method: remove_objects
# params: bucket_name, object prefix (e.g. directory path)
from minio.error import ResponseError
try:
get_name = lambda object: object.object_name
names = map(get_name, client.list_objects_v2('bucketname', 'path', recursive=True))
for err in client.remove_objects('bucketname', names):
print("Deletion Error: {}".format(err))
except ResponseError as err:
print(err)
Supported Operations
At the moment, the following object-level operations are supported. But we intend to add more bucket and admin-level functions soon. Please feel free to write to us at cloud-platform@e2enetworks.com
for feature requests.
Operation | Operation | Operation |
---|---|---|
list_objects | get_object | remove_object |
put_object | copy_object | remove_objects |
fput_object | fget_object | get_partial_object |
select_object_content | remove_incomplete_upload | presigned_get_object |
presigned_put_object |