Other SDKs

Learn how to connect to RustFS from languages without an official AWS SDK.

If AWS does not provide an official SDK for your language, you can use one of the following approaches to integrate with RustFS:

Call the S3 REST API directly

The S3 protocol is a standard RESTful API. You can implement the client logic yourself in any language that can send HTTP requests (such as C, Rust, Lua, or Erlang).

Key steps

  • Request signing: Implement AWS Signature Version 4 (the most complex part).
  • Headers and canonical request: Build the canonical request and the required headers.
  • HTTP client: Send the signed request with an HTTP or HTTPS client.

We recommend consulting existing open-source implementations of request signing, such as:


Use the AWS CLI or a service built on an existing SDK

If you don't want to implement signatures yourself, you can:

Call the AWS CLI

For example, run the following command from your application using a shell:

aws s3 cp /path/to/hello.txt s3://my-bucket/hello.txt --endpoint-url http://localhost:9000

Alternatively, build a small relay service with an SDK for Node.js or Python, then call it from your application to upload or download objects.

Run a proxy service

Run a small HTTP service (for example, Flask, FastAPI, or Express) and expose an API that clients without S3 support can call:

POST /upload -> Service internally calls SDK to upload objects to RustFS
GET /presigned-url -> Generate presigned URL for frontend/client use

Find a community SDK

For languages without an official AWS SDK, look for community-maintained S3 clients. For example:

  • Haskell: amazonka-s3
  • Rust: rusoto (deprecated) or aws-sdk-rust
  • OCaml: Build your own client on top of cohttp
  • Delphi: Commercial libraries with S3 support are available

Community SDKs vary greatly in stability, so you should evaluate activity, documentation, and compatibility before use.


Upload directly with presigned URLs

For example:

  • Use presigned URLs to upload directly from a browser or mobile app.
  • Implement the upload logic in a backend service (for example, Node.js, Python, or Go)

Choose an approach

SituationRecommended approach
You need full control, or you target an embedded environmentImplement SigV4 signing yourself
Limited SDK support, but a shell is availableUpload with the AWS CLI
You can deploy a relay serviceBuild a small S3 gateway with Python or Node.js
Frontend uploadUse presigned URLs

On this page