aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-03-19 21:13:56 -0700
committerChris Lu <chris.lu@gmail.com>2020-03-19 21:13:56 -0700
commit709f231e23d2ad40e2094a906d50fefad31423be (patch)
treef0814085f12e1e5d4f81af67944f3b206084de80
parentd848d089448372326edd9f8a20dbc9fc3c46f6dd (diff)
downloadseaweedfs-709f231e23d2ad40e2094a906d50fefad31423be.tar.xz
seaweedfs-709f231e23d2ad40e2094a906d50fefad31423be.zip
tiered storage: add s3 endpoint for private s3 implementation
fix https://github.com/chrislusf/seaweedfs/issues/1238
-rw-r--r--weed/command/scaffold.go1
-rw-r--r--weed/storage/backend/s3_backend/s3_backend.go6
-rw-r--r--weed/storage/backend/s3_backend/s3_sessions.go5
3 files changed, 9 insertions, 3 deletions
diff --git a/weed/command/scaffold.go b/weed/command/scaffold.go
index cb20adc72..bcb4fc31e 100644
--- a/weed/command/scaffold.go
+++ b/weed/command/scaffold.go
@@ -380,6 +380,7 @@ sequencer_etcd_urls = "http://127.0.0.1:2379"
aws_secret_access_key = "" # if empty, loads from the shared credentials file (~/.aws/credentials).
region = "us-east-2"
bucket = "your_bucket_name" # an existing bucket
+ endpoint = ""
# create this number of logical volumes if no more writable volumes
# count_x means how many copies of data.
diff --git a/weed/storage/backend/s3_backend/s3_backend.go b/weed/storage/backend/s3_backend/s3_backend.go
index 8d71861c2..e08fef8a4 100644
--- a/weed/storage/backend/s3_backend/s3_backend.go
+++ b/weed/storage/backend/s3_backend/s3_backend.go
@@ -36,6 +36,7 @@ type S3BackendStorage struct {
aws_secret_access_key string
region string
bucket string
+ endpoint string
conn s3iface.S3API
}
@@ -46,7 +47,9 @@ func newS3BackendStorage(configuration backend.StringProperties, configPrefix st
s.aws_secret_access_key = configuration.GetString(configPrefix + "aws_secret_access_key")
s.region = configuration.GetString(configPrefix + "region")
s.bucket = configuration.GetString(configPrefix + "bucket")
- s.conn, err = createSession(s.aws_access_key_id, s.aws_secret_access_key, s.region)
+ s.endpoint = configuration.GetString(configPrefix + "endpoint")
+
+ s.conn, err = createSession(s.aws_access_key_id, s.aws_secret_access_key, s.region, s.endpoint)
glog.V(0).Infof("created backend storage s3.%s for region %s bucket %s", s.id, s.region, s.bucket)
return
@@ -58,6 +61,7 @@ func (s *S3BackendStorage) ToProperties() map[string]string {
m["aws_secret_access_key"] = s.aws_secret_access_key
m["region"] = s.region
m["bucket"] = s.bucket
+ m["endpoint"] = s.endpoint
return m
}
diff --git a/weed/storage/backend/s3_backend/s3_sessions.go b/weed/storage/backend/s3_backend/s3_sessions.go
index 5fdbcb66b..e2fdf1eb6 100644
--- a/weed/storage/backend/s3_backend/s3_sessions.go
+++ b/weed/storage/backend/s3_backend/s3_sessions.go
@@ -24,7 +24,7 @@ func getSession(region string) (s3iface.S3API, bool) {
return sess, found
}
-func createSession(awsAccessKeyId, awsSecretAccessKey, region string) (s3iface.S3API, error) {
+func createSession(awsAccessKeyId, awsSecretAccessKey, region, endpoint string) (s3iface.S3API, error) {
sessionsLock.Lock()
defer sessionsLock.Unlock()
@@ -34,7 +34,8 @@ func createSession(awsAccessKeyId, awsSecretAccessKey, region string) (s3iface.S
}
config := &aws.Config{
- Region: aws.String(region),
+ Region: aws.String(region),
+ Endpoint: aws.String(endpoint),
}
if awsAccessKeyId != "" && awsSecretAccessKey != "" {
config.Credentials = credentials.NewStaticCredentials(awsAccessKeyId, awsSecretAccessKey, "")