First you need a client, like awscli, s3cmd or similar. For simplicity here's how I'd get it up and running with awscli. First configure credentials and a profile:
.aws/config:
[profile <name>]
region = <region>
s3 =
endpoint_url = https://<endpoint-url>
signature_version = s3v4
s3api =
endpoint_url = https://<endpoint-url>
.aws/credentials:
[<name>]
aws_access_key_id=<your-key>
aws_secret_access_key=<your-key>
Now you can start using the s3 api and access all the functionality. To create a bucket on your storage, use something like:
aws s3api create-bucket --bucket my-bucket --profile <my-profile>
Then lets say you want to upload a folder, use:
aws s3 sync Downloads/temp/ s3://my-bucket/ --profile <my-profile>
Now that will make it private by default, to make it public, add --acl public-read
aws s3 sync --acl public-read Downloads/temp/ s3://my-bucket/ --profile <my-profile>
Unfortunately there's no support for custom domains yet so you'll have to improvise with a front end node, nginx proxy pass, Cloudflare or whatever is more convenient to you.