1
mirror of https://github.com/rclone/rclone synced 2025-03-07 07:49:20 +01:00

s3: add Scaleway provider - fixes #4338

This commit is contained in:
Vincent Feltz 2020-06-12 17:04:16 +02:00 committed by Nick Craig-Wood
parent f9306218f8
commit f4d7e41f24
2 changed files with 48 additions and 5 deletions

View File

@ -96,6 +96,9 @@ func init() {
}, { }, {
Value: "Netease", Value: "Netease",
Help: "Netease Object Storage (NOS)", Help: "Netease Object Storage (NOS)",
}, {
Value: "Scaleway",
Help: "Scaleway Object Storage",
}, { }, {
Value: "StackPath", Value: "StackPath",
Help: "StackPath Object Storage", Help: "StackPath Object Storage",
@ -176,10 +179,21 @@ func init() {
Value: "sa-east-1", Value: "sa-east-1",
Help: "South America (Sao Paulo) Region\nNeeds location constraint sa-east-1.", Help: "South America (Sao Paulo) Region\nNeeds location constraint sa-east-1.",
}}, }},
}, {
Name: "region",
Help: "Region to connect to.",
Provider: "Scaleway",
Examples: []fs.OptionExample{{
Value: "nl-ams",
Help: "Amsterdam, The Netherlands",
}, {
Value: "fr-par",
Help: "Paris, France",
}},
}, { }, {
Name: "region", Name: "region",
Help: "Region to connect to.\nLeave blank if you are using an S3 clone and you don't have a region.", Help: "Region to connect to.\nLeave blank if you are using an S3 clone and you don't have a region.",
Provider: "!AWS,Alibaba", Provider: "!AWS,Alibaba,Scaleway",
Examples: []fs.OptionExample{{ Examples: []fs.OptionExample{{
Value: "", Value: "",
Help: "Use this if unsure. Will use v4 signatures and an empty region.", Help: "Use this if unsure. Will use v4 signatures and an empty region.",
@ -361,6 +375,17 @@ func init() {
Value: "oss-me-east-1.aliyuncs.com", Value: "oss-me-east-1.aliyuncs.com",
Help: "Middle East 1 (Dubai)", Help: "Middle East 1 (Dubai)",
}}, }},
}, {
Name: "endpoint",
Help: "Endpoint for Scaleway Object Storage.",
Provider: "Scaleway",
Examples: []fs.OptionExample{{
Value: "s3.nl-ams.scw.cloud",
Help: "Amsterdam Endpoint",
}, {
Value: "s3.fr-par.scw.cloud",
Help: "Paris Endpoint",
}},
}, { }, {
Name: "endpoint", Name: "endpoint",
Help: "Endpoint for StackPath Object Storage.", Help: "Endpoint for StackPath Object Storage.",
@ -378,7 +403,7 @@ func init() {
}, { }, {
Name: "endpoint", Name: "endpoint",
Help: "Endpoint for S3 API.\nRequired when using an S3 clone.", Help: "Endpoint for S3 API.\nRequired when using an S3 clone.",
Provider: "!AWS,IBMCOS,Alibaba,StackPath", Provider: "!AWS,IBMCOS,Alibaba,Scaleway,StackPath",
Examples: []fs.OptionExample{{ Examples: []fs.OptionExample{{
Value: "objects-us-east-1.dream.io", Value: "objects-us-east-1.dream.io",
Help: "Dream Objects endpoint", Help: "Dream Objects endpoint",
@ -565,7 +590,7 @@ func init() {
}, { }, {
Name: "location_constraint", Name: "location_constraint",
Help: "Location constraint - must be set to match the Region.\nLeave blank if not sure. Used when creating buckets only.", Help: "Location constraint - must be set to match the Region.\nLeave blank if not sure. Used when creating buckets only.",
Provider: "!AWS,IBMCOS,Alibaba,StackPath", Provider: "!AWS,IBMCOS,Alibaba,Scaleway,StackPath",
}, { }, {
Name: "acl", Name: "acl",
Help: `Canned ACL used when creating buckets and storing or copying objects. Help: `Canned ACL used when creating buckets and storing or copying objects.
@ -741,6 +766,21 @@ isn't set then "acl" is used instead.`,
Value: "STANDARD_IA", Value: "STANDARD_IA",
Help: "Infrequent access storage mode.", Help: "Infrequent access storage mode.",
}}, }},
}, {
// Mapping from here: https://www.scaleway.com/en/docs/object-storage-glacier/#-Scaleway-Storage-Classes
Name: "storage_class",
Help: "The storage class to use when storing new objects in S3.",
Provider: "Scaleway",
Examples: []fs.OptionExample{{
Value: "",
Help: "Default",
}, {
Value: "STANDARD",
Help: "The Standard class for any upload; suitable for on-demand content like streaming or CDN.",
}, {
Value: "GLACIER",
Help: "Archived storage; prices are lower, but it needs to be restored first to be accessed.",
}},
}, { }, {
Name: "upload_cutoff", Name: "upload_cutoff",
Help: `Cutoff for switching to chunked upload Help: `Cutoff for switching to chunked upload
@ -1149,9 +1189,12 @@ func s3Connection(opt *Options) (*s3.S3, *session.Session, error) {
if opt.Region == "" { if opt.Region == "" {
opt.Region = "us-east-1" opt.Region = "us-east-1"
} }
if opt.Provider == "AWS" || opt.Provider == "Alibaba" || opt.Provider == "Netease" || opt.UseAccelerateEndpoint { if opt.Provider == "AWS" || opt.Provider == "Alibaba" || opt.Provider == "Netease" || opt.Provider == "Scaleway" || opt.UseAccelerateEndpoint {
opt.ForcePathStyle = false opt.ForcePathStyle = false
} }
if opt.Provider == "Scaleway" && opt.MaxUploadParts > 1000 {
opt.MaxUploadParts = 1000
}
awsConfig := aws.NewConfig(). awsConfig := aws.NewConfig().
WithMaxRetries(0). // Rely on rclone's retry logic WithMaxRetries(0). // Rely on rclone's retry logic
WithCredentials(cred). WithCredentials(cred).

View File

@ -1675,6 +1675,7 @@ Scaleway provides an S3 interface which can be configured for use with rclone li
``` ```
[scaleway] [scaleway]
type = s3 type = s3
provider = Scaleway
env_auth = false env_auth = false
endpoint = s3.nl-ams.scw.cloud endpoint = s3.nl-ams.scw.cloud
access_key_id = SCWXXXXXXXXXXXXXX access_key_id = SCWXXXXXXXXXXXXXX
@ -1682,7 +1683,6 @@ secret_access_key = 1111111-2222-3333-44444-55555555555555
region = nl-ams region = nl-ams
location_constraint = location_constraint =
acl = private acl = private
force_path_style = false
server_side_encryption = server_side_encryption =
storage_class = storage_class =
``` ```