From 0257ae9b50bc3b6713a96e1be62123628336f958 Mon Sep 17 00:00:00 2001 From: Dzmitry Nianakhau Date: Mon, 27 Jul 2026 12:35:27 +0300 Subject: [PATCH] s3: add Scality (RING / ARTESCA) provider Add Scality as an S3 provider covering both Scality RING (S3 Connector) and ARTESCA, which share the same CloudServer + Vault S3 implementation. The only quirk required is force_path_style: both products support path-style addressing, and virtual-hosted style needs wildcard DNS that on-prem deployments usually lack. --- README.md | 1 + backend/s3/provider/Scality.yaml | 8 ++ docs/content/_index.md | 1 + docs/content/s3.md | 126 +++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 backend/s3/provider/Scality.yaml diff --git a/README.md b/README.md index e626e8a21..e5905ea06 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ directories to and from different cloud storage providers. - RackCorp Object Storage [:page_facing_up:](https://rclone.org/s3/#RackCorp) - rsync.net [:page_facing_up:](https://rclone.org/sftp/#rsync-net) - Scaleway [:page_facing_up:](https://rclone.org/s3/#scaleway) +- Scality (RING / ARTESCA) [:page_facing_up:](https://rclone.org/s3/#scality) - Seafile [:page_facing_up:](https://rclone.org/seafile/) - Seagate Lyve Cloud [:page_facing_up:](https://rclone.org/s3/#lyve) - SeaweedFS [:page_facing_up:](https://rclone.org/s3/#seaweedfs) diff --git a/backend/s3/provider/Scality.yaml b/backend/s3/provider/Scality.yaml new file mode 100644 index 000000000..841747e6d --- /dev/null +++ b/backend/s3/provider/Scality.yaml @@ -0,0 +1,8 @@ +name: Scality +description: Scality (RING / ARTESCA) +region: {} +endpoint: {} +location_constraint: {} +acl: {} +quirks: + force_path_style: true # RING and ARTESCA support path-style; virtual-hosted style needs wildcard DNS which on-prem clients often lack diff --git a/docs/content/_index.md b/docs/content/_index.md index 671a3e2b9..27101fd9d 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -204,6 +204,7 @@ WebDAV or S3, that work out of the box.) {{< provider name="Rclone Serve S3" home="/commands/rclone_serve_s3/" config="/s3/#rclone" >}} {{< provider name="rsync.net" home="https://rsync.net/products/rclone.html" config="/sftp/#rsync-net" >}} {{< provider name="Scaleway" home="https://www.scaleway.com/object-storage/" config="/s3/#scaleway" >}} +{{< provider name="Scality (RING / ARTESCA)" home="https://www.scality.com/" config="/s3/#scality" >}} {{< provider name="Seafile" home="https://www.seafile.com/" config="/seafile/" >}} {{< provider name="Seagate Lyve Cloud" home="https://www.seagate.com/gb/en/services/cloud/storage/" config="/s3/#lyve" >}} {{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}} diff --git a/docs/content/s3.md b/docs/content/s3.md index 5d5c541de..a4ac9d04f 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -49,6 +49,7 @@ The S3 backend can be used with a number of different providers: {{< provider name="RackCorp Object Storage" home="https://www.rackcorp.com/" config="/s3/#RackCorp" >}} {{< provider name="Rclone Serve S3" home="/commands/rclone_serve_s3/" config="/s3/#rclone" >}} {{< provider name="Scaleway" home="https://www.scaleway.com/en/object-storage/" config="/s3/#scaleway" >}} +{{< provider name="Scality (RING / ARTESCA)" home="https://www.scality.com/" config="/s3/#scality" >}} {{< provider name="Seagate Lyve Cloud" home="https://www.seagate.com/gb/en/services/cloud/storage/" config="/s3/#lyve" >}} {{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}} {{< provider name="Selectel" home="https://selectel.ru/services/cloud/storage/" config="/s3/#selectel" >}} @@ -8929,6 +8930,131 @@ Don't forget that in this state you can't read files back after, you will need to restore them to "STANDARD" storage_class first before being able to read them (see "restore" section above) +### Scality {#scality} + +[Scality](https://www.scality.com/) RING and ARTESCA both expose an +S3-compatible object storage API that works with rclone using `s3` as the +type and `Scality` as the provider. + +Both products are S3 clones, so you always need to set the `endpoint` to the +S3 API of your deployment (the S3 Connector service on RING, or the S3 +data-service endpoint on ARTESCA). The `Scality` provider uses path-style +addressing (`endpoint/bucket/key`) which is supported out of the box and does +not require any wildcard/virtual-host DNS entries. + +Get your access key, secret key and endpoint from your Scality administrator +(on ARTESCA these are created per account under *Identity > Accounts* in the +UI; on RING they are created with `vaultclient` or the S3 Console). + +Here is an example of making a Scality configuration. First run: + +```console +rclone config +``` + +This will guide you through an interactive setup process. + +```text +No remotes found, make a new one? +n) New remote +s) Set configuration password +q) Quit config +n/s/q> n + +Enter name for new remote. +name> scality + +Option Storage. +Type of storage to configure. +Choose a number from below, or type in your own value. +[snip] + XX / Amazon S3 Compliant Storage Providers including AWS, ...Scaleway, Scality, SeaweedFS, ... + \ (s3) +[snip] +Storage> s3 + +Option provider. +Choose your S3 provider. +Choose a number from below, or type in your own value. +Press Enter to leave empty. +[snip] +XX / Scality (RING / ARTESCA) + \ (Scality) +[snip] +provider> Scality + +Option env_auth. +Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). +Only applies if access_key_id and secret_access_key is blank. +Choose a number from below, or type in your own boolean value (true or false). +Press Enter for the default (false). + 1 / Enter AWS credentials in the next step. + \ (false) + 2 / Get AWS credentials from the environment (env vars or IAM). + \ (true) +env_auth> + +Option access_key_id. +AWS Access Key ID. +Leave blank for anonymous access or runtime credentials. +Enter a value. Press Enter to leave empty. +access_key_id> S3_ACCESS_KEY + +Option secret_access_key. +AWS Secret Access Key (password). +Leave blank for anonymous access or runtime credentials. +Enter a value. Press Enter to leave empty. +secret_access_key> S3_SECRET_KEY + +Option region. +Region to connect to. +Leave blank if you are using an S3 clone and you don't have a region. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + / Use this if unsure. + 1 | Will use v4 signatures and an empty region. + \ () + / Use this only if v4 signatures don't work. + 2 | E.g. pre Jewel/v10 CEPH. + \ (other-v2-signature) +region> + +Option endpoint. +Endpoint for S3 API. +Required when using an S3 clone. +Enter a value. Press Enter to leave empty. +endpoint> https://s3.example.com + +Edit advanced config? +y) Yes +n) No (default) +y/n> + +Configuration complete. +Options: +- type: s3 +- provider: Scality +- access_key_id: S3_ACCESS_KEY +- secret_access_key: S3_SECRET_KEY +- endpoint: https://s3.example.com +Keep this "scality" remote? +y) Yes this is OK (default) +e) Edit this remote +d) Delete this remote +y/e/d> y +``` + +This will leave the config file looking like this. + +```ini +[scality] +type = s3 +provider = Scality +access_key_id = S3_ACCESS_KEY +secret_access_key = S3_SECRET_KEY +endpoint = https://s3.example.com +``` + ### Seagate Lyve Cloud {#lyve} [Seagate Lyve Cloud](https://www.seagate.com/gb/en/services/cloud/storage/) is