S3 for developers
S3 as standard service
Since its launch by Amazon in 2006, S3 has become the standard for object storage. Due to the service’s high availability, ease of use and quality security options, companies have adopted S3 as a natural part of their cloud strategy.
The service is popular among application developers because of its accessibility via the web interface and the wide range of ready-made tools for different programming languages.
Compatibility with AWS S3
S3 (Simple Storage Service) has gradually been offered by other large and local players in the cloud market. Nowadays, you can choose from several providers.
Geetoo S3 Cloud Storage is an AWS S3 compatible storage type. It’s good to know that compatibility with AWS S3 is not always 100%, and S3 services from different providers may have different levels of compatibility.
Cloudian(S3 API for Enterprise Object Storage), which is the platform we use for Geetoo S3 Cloud Storage, provides an interesting comparison on this topic.
Geetoo S3 Cloud Storage is AWS S3 compliant in terms of basic CRUD (Create, Read, Update, Delete) operations as well as more advanced operations such as access control (ACL), encryption, versioning, etc.
It follows almost the same rules as AWS S3 with perhaps only one exception – the geographical proximity of the storage. Data in Geetoo S3 Cloud Storage remains at the heart of Europe.
Thanks to compatibility, services developed for AWS S3 are fully portable to Geetoo S3 Cloud Storage .
Options for developers
S3 itself offers developers, among other things:
- Web hosting of static websites
- SDK for different languages (Python, Swift, Java, PHP…)
- Access via CLI (Command Line Interface)
- REST API
- Access for applications with high permission configurability
- Ransomware protection for data
- Analytics and monitoring of the S3 environment
Documentation for all of the above options can be conveniently found by logging into your Geetoo S3 admin interface in the Help section.
Our clients use S3 e.g. as a data lake for analytics. We use it internally as a storage backend for Python Django web applications that we develop ourselves. We run web applications with S3 as easily scalable microservices in a Kubernetes environment and the static application data is stored outside of this environment on S3. This significantly speeds up the response time of the web application as a whole.
We have also successfully tested the use of Geetoo S3 (in combination with C# .NET) in creating connectors for no-code and low-code systems. We know for a fact that you can use Geetoo S3 as a file storage even if you decide to go this route.
S3 API and SDK
S3 itself has two distinct APIs. The first one is for its administration and is used by us as the service provider. Among other things, we use it to set up customer environments and obtain the basis for PAYG (pay-as-you-go) services. The second API is for users of the S3 service itself.
The S3 API for users follows basic REST principles and you can work with it using common clients like Insomnia, Apidog, Postman, etc.
Even a regular Internet browser is sufficient to read the anonymously available data – thus offering a wide range of applications for various web services.
All the details of how to send API requests are described in the documentation. The API documentation is accessible by logging in from the help section.
To interact with the API you will need to know:
- Access key id of the form 5041c5da6d7f37e9d57b
- Secret key in the form cgf+K3mmWBVKHMtkAsDM27c4VluqWjcKzjlE/H47
- Region, e.g. prague
- Endpoint – endpoints for our S3 will usually be of the form https://s3-prague.stor.geetoo.com
A very important list of endpoints is available to users after logging in from Profile -> Security Credentials. Here you can also create, activate and deactivate access data for applications. The use of user credentials (names and passwords) for application interaction with the API is not really a supported use-case here, and the requirements for communication security are much higher.
Although the API is standardized and well documented, we highly recommend using one of the ready-made SDKs (software development kits) to work with it. It is infinitely more comfortable to work with the SDK than to try to interact directly with the API. The SDK will save you a lot of time.
The SDK also handles issues such as signing and verifying requests on behalf of the developer.
If you use any of the official SDKs in combination with Geetoo S3 Cloud Storage, always include the endpoint as a connection parameter, which you can find out from your S3 interface.
Integration into development tools
In addition to the SDKs mentioned above, there are also extensions for AWS S3 compatible services that can be integrated directly into the development tools. You can integrate Geetoo S3 Cloud Storage into your favorite VS Code, Visual Studio, Eclipse or PyCharm from JetBrains.
Could be useful: tips from the development department
Below I add some cool tips on information verified by our development department that might be useful during development:
- GitHub repository with Python scripting examples including endpoint: cloudian-api – Repositories
- Overriding Endpoints in the AWS SDK for .NET | Amazon Web Services
- GitHub repository with examples of .NET scripts: https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/dotnetv3/S3/README.md