From 9614fc60f2a193f9ec45fb0871c5e2ba873e7e3c Mon Sep 17 00:00:00 2001 From: Matthias Gatto Date: Wed, 2 Oct 2024 11:26:41 +0200 Subject: [PATCH] s3: add Outscale provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: matthias.gatto Co-authored-by: André Tran --- README.md | 1 + backend/s3/s3.go | 47 +++++++++++- docs/content/_index.md | 1 + docs/content/s3.md | 163 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 211 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 866986479..d1e859244 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ Rclone *("rsync for cloud storage")* is a command-line program to sync files and * OpenStack Swift [:page_facing_up:](https://rclone.org/swift/) * Oracle Cloud Storage [:page_facing_up:](https://rclone.org/swift/) * Oracle Object Storage [:page_facing_up:](https://rclone.org/oracleobjectstorage/) + * Outscale [:page_facing_up:](https://rclone.org/s3/#outscale) * ownCloud [:page_facing_up:](https://rclone.org/webdav/#owncloud) * pCloud [:page_facing_up:](https://rclone.org/pcloud/) * Petabox [:page_facing_up:](https://rclone.org/s3/#petabox) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index 5bc36cc11..0c234dad9 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -136,6 +136,9 @@ var providerOption = fs.Option{ }, { Value: "Netease", Help: "Netease Object Storage (NOS)", + }, { + Value: "Outscale", + Help: "OUTSCALE Object Storage (OOS)", }, { Value: "Petabox", Help: "Petabox Object Storage", @@ -488,6 +491,26 @@ func init() { Value: "eu-south-2", Help: "Logrono, Spain", }}, + }, { + Name: "region", + Help: "Region where your bucket will be created and your data stored.\n", + Provider: "Outscale", + Examples: []fs.OptionExample{{ + Value: "eu-west-2", + Help: "Paris, France", + }, { + Value: "us-east-2", + Help: "New Jersey, USA", + }, { + Value: "us-west-1", + Help: "California, USA", + }, { + Value: "cloudgouv-eu-west-1", + Help: "SecNumCloud, Paris, France", + }, { + Value: "ap-northeast-1", + Help: "Tokyo, Japan", + }}, }, { Name: "region", Help: "Region where your bucket will be created and your data stored.\n", @@ -1344,6 +1367,26 @@ func init() { Value: "s3.ap-southeast-1.lyvecloud.seagate.com", Help: "Seagate Lyve Cloud AP Southeast 1 (Singapore)", Provider: "LyveCloud", + }, { + Value: "oos.eu-west-2.outscale.com", + Help: "Outscale EU West 2 (Paris)", + Provider: "Outscale", + }, { + Value: "oos.us-east-2.outscale.com", + Help: "Outscale US east 2 (New Jersey)", + Provider: "Outscale", + }, { + Value: "oos.us-west-1.outscale.com", + Help: "Outscale EU West 1 (California)", + Provider: "Outscale", + }, { + Value: "oos.cloudgouv-eu-west-1.outscale.com", + Help: "Outscale SecNumCloud (Paris)", + Provider: "Outscale", + }, { + Value: "oos.ap-northeast-1.outscale.com", + Help: "Outscale AP Northeast 1 (Japan)", + Provider: "Outscale", }, { Value: "s3.wasabisys.com", Help: "Wasabi US East 1 (N. Virginia)", @@ -1798,7 +1841,7 @@ func init() { }, { Name: "location_constraint", Help: "Location constraint - must be set to match the Region.\n\nLeave blank if not sure. Used when creating buckets only.", - Provider: "!AWS,Alibaba,ArvanCloud,HuaweiOBS,ChinaMobile,Cloudflare,IBMCOS,IDrive,IONOS,Leviia,Liara,Linode,Magalu,Qiniu,RackCorp,Scaleway,StackPath,Storj,TencentCOS,Petabox", + Provider: "!AWS,Alibaba,ArvanCloud,HuaweiOBS,ChinaMobile,Cloudflare,IBMCOS,IDrive,IONOS,Leviia,Liara,Linode,Magalu,Outscale,Qiniu,RackCorp,Scaleway,StackPath,Storj,TencentCOS,Petabox", }, { Name: "acl", Help: `Canned ACL used when creating buckets and storing or copying objects. @@ -3359,6 +3402,8 @@ func setQuirks(opt *Options) { urlEncodeListings = false useMultipartEtag = false // untested useAlreadyExists = false // untested + case "Outscale": + virtualHostStyle = false case "RackCorp": // No quirks useMultipartEtag = false // untested diff --git a/docs/content/_index.md b/docs/content/_index.md index 5bb813a0b..45abcfef0 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -160,6 +160,7 @@ WebDAV or S3, that work out of the box.) {{< provider name="OpenStack Swift" home="https://docs.openstack.org/swift/latest/" config="/swift/" >}} {{< provider name="Oracle Cloud Storage Swift" home="https://docs.oracle.com/en-us/iaas/integration/doc/configure-object-storage.html" config="/swift/" >}} {{< provider name="Oracle Object Storage" home="https://www.oracle.com/cloud/storage/object-storage" config="/oracleobjectstorage/" >}} +{{< provider name="Outscale" home="https://en.outscale.com/storage/outscale-object-storage/" config="/s3/#outscale" >}} {{< provider name="ownCloud" home="https://owncloud.org/" config="/webdav/#owncloud" >}} {{< provider name="pCloud" home="https://www.pcloud.com/" config="/pcloud/" >}} {{< provider name="Petabox" home="https://petabox.io/" config="/s3/#petabox" >}} diff --git a/docs/content/s3.md b/docs/content/s3.md index 2117e95a5..d5192542f 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -27,6 +27,7 @@ The S3 backend can be used with a number of different providers: {{< provider name="Linode Object Storage" home="https://www.linode.com/products/object-storage/" config="/s3/#linode" >}} {{< provider name="Magalu Object Storage" home="https://magalu.cloud/object-storage/" config="/s3/#magalu" >}} {{< provider name="Minio" home="https://www.minio.io/" config="/s3/#minio" >}} +{{< provider name="Outscale" home="https://en.outscale.com/storage/outscale-object-storage/" config="/s3/#outscale" >}} {{< provider name="Petabox" home="https://petabox.io/" config="/s3/#petabox" >}} {{< provider name="Qiniu Cloud Object Storage (Kodo)" home="https://www.qiniu.com/en/products/kodo" config="/s3/#qiniu" >}} {{< provider name="RackCorp Object Storage" home="https://www.rackcorp.com/" config="/s3/#RackCorp" >}} @@ -3225,6 +3226,168 @@ So once set up, for example, to copy files into a bucket rclone copy /path/to/files minio:bucket ``` +### Outscale + +[OUTSCALE Object Storage (OOS)](https://en.outscale.com/storage/outscale-object-storage/) is an enterprise-grade, S3-compatible storage service provided by OUTSCALE, a brand of Dassault Systèmes. For more information about OOS, see the [official documentation](https://docs.outscale.com/en/userguide/OUTSCALE-Object-Storage-OOS.html). + +Here is an example of an OOS configuration that you can paste into your rclone configuration file: + +``` +[outscale] +type = s3 +provider = Outscale +env_auth = false +access_key_id = ABCDEFGHIJ0123456789 +secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +region = eu-west-2 +endpoint = oos.eu-west-2.outscale.com +acl = private +``` + +You can also run `rclone config` to go through the interactive setup process: + +``` +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> outscale +``` + +``` +Option Storage. +Type of storage to configure. +Choose a number from below, or type in your own value. +[snip] + X / Amazon S3 Compliant Storage Providers including AWS, ...Outscale, ...and others + \ (s3) +[snip] +Storage> outscale +``` + +``` +Option provider. +Choose your S3 provider. +Choose a number from below, or type in your own value. +Press Enter to leave empty. +[snip] +XX / OUTSCALE Object Storage (OOS) + \ (Outscale) +[snip] +provider> Outscale +``` + +``` +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> ABCDEFGHIJ0123456789 +``` + +``` +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> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +``` + +``` +Option region. +Region where your bucket will be created and your data stored. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + 1 / Paris, France + \ (eu-west-2) + 2 / New Jersey, USA + \ (us-east-2) + 3 / California, USA + \ (us-west-1) + 4 / SecNumCloud, Paris, France + \ (cloudgouv-eu-west-1) + 5 / Tokyo, Japan + \ (ap-northeast-1) +region> 1 +``` + +``` +Option endpoint. +Endpoint for S3 API. +Required when using an S3 clone. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + 1 / Outscale EU West 2 (Paris) + \ (oos.eu-west-2.outscale.com) + 2 / Outscale US east 2 (New Jersey) + \ (oos.us-east-2.outscale.com) + 3 / Outscale EU West 1 (California) + \ (oos.us-west-1.outscale.com) + 4 / Outscale SecNumCloud (Paris) + \ (oos.cloudgouv-eu-west-1.outscale.com) + 5 / Outscale AP Northeast 1 (Japan) + \ (oos.ap-northeast-1.outscale.com) +endpoint> 1 +``` + +``` +Option acl. +Canned ACL used when creating buckets and storing or copying objects. +This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too. +For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl +Note that this ACL is applied when server-side copying objects as S3 +doesn't copy the ACL from the source but rather writes a fresh one. +If the acl is an empty string then no X-Amz-Acl: header is added and +the default (private) will be used. +Choose a number from below, or type in your own value. +Press Enter to leave empty. + / Owner gets FULL_CONTROL. + 1 | No one else has access rights (default). + \ (private) +[snip] +acl> 1 +``` + +``` +Edit advanced config? +y) Yes +n) No (default) +y/n> n +``` + +``` +Configuration complete. +Options: +- type: s3 +- provider: Outscale +- access_key_id: ABCDEFGHIJ0123456789 +- secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +- endpoint: oos.eu-west-2.outscale.com +Keep this "outscale" remote? +y) Yes this is OK (default) +e) Edit this remote +d) Delete this remote +y/e/d> y +``` + ### Qiniu Cloud Object Storage (Kodo) {#qiniu} [Qiniu Cloud Object Storage (Kodo)](https://www.qiniu.com/en/products/kodo), a completely independent-researched core technology which is proven by repeated customer experience has occupied absolute leading market leader position. Kodo can be widely applied to mass data management.