diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-08-24 23:46:33 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-08-24 23:46:33 -0700 |
| commit | a7a914f120908f7204bf7310a86f401c05dce982 (patch) | |
| tree | b3fb3de23239ce1bff41271a04529b363ef612d9 /weed/remote_storage | |
| parent | 2d805beed4d19dbd141cc312c9bc110cd76f3d60 (diff) | |
| download | seaweedfs-a7a914f120908f7204bf7310a86f401c05dce982.tar.xz seaweedfs-a7a914f120908f7204bf7310a86f401c05dce982.zip | |
cloud drive: add support for Baidu BOS
Diffstat (limited to 'weed/remote_storage')
| -rw-r--r-- | weed/remote_storage/s3/aliyun.go | 5 | ||||
| -rw-r--r-- | weed/remote_storage/s3/backblaze.go | 2 | ||||
| -rw-r--r-- | weed/remote_storage/s3/baidu.go | 43 | ||||
| -rw-r--r-- | weed/remote_storage/s3/tencent.go | 6 |
4 files changed, 51 insertions, 5 deletions
diff --git a/weed/remote_storage/s3/aliyun.go b/weed/remote_storage/s3/aliyun.go index 37e1e1fb4..6cfc0130f 100644 --- a/weed/remote_storage/s3/aliyun.go +++ b/weed/remote_storage/s3/aliyun.go @@ -27,15 +27,16 @@ func (s AliyunRemoteStorageMaker) Make(conf *filer_pb.RemoteConf) (remote_storag config := &aws.Config{ Endpoint: aws.String(conf.AliyunEndpoint), + Region: aws.String(conf.AliyunRegion), S3ForcePathStyle: aws.Bool(false), } - if conf.AliyunAccessKey != "" && conf.AliyunSecretKey != "" { + if accessKey != "" && secretKey != "" { config.Credentials = credentials.NewStaticCredentials(accessKey, secretKey, "") } sess, err := session.NewSession(config) if err != nil { - return nil, fmt.Errorf("create aws session: %v", err) + return nil, fmt.Errorf("create aliyun session: %v", err) } client.conn = s3.New(sess) return client, nil diff --git a/weed/remote_storage/s3/backblaze.go b/weed/remote_storage/s3/backblaze.go index 270997abe..2105f2ee0 100644 --- a/weed/remote_storage/s3/backblaze.go +++ b/weed/remote_storage/s3/backblaze.go @@ -31,7 +31,7 @@ func (s BackBlazeRemoteStorageMaker) Make(conf *filer_pb.RemoteConf) (remote_sto sess, err := session.NewSession(config) if err != nil { - return nil, fmt.Errorf("create aws session: %v", err) + return nil, fmt.Errorf("create backblaze session: %v", err) } client.conn = s3.New(sess) return client, nil diff --git a/weed/remote_storage/s3/baidu.go b/weed/remote_storage/s3/baidu.go new file mode 100644 index 000000000..65585c123 --- /dev/null +++ b/weed/remote_storage/s3/baidu.go @@ -0,0 +1,43 @@ +package s3 + +import ( + "fmt" + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" + "github.com/chrislusf/seaweedfs/weed/remote_storage" + "github.com/chrislusf/seaweedfs/weed/util" + "os" +) + +func init() { + remote_storage.RemoteStorageClientMakers["baidu"] = new(BaiduRemoteStorageMaker) +} + +type BaiduRemoteStorageMaker struct{} + +func (s BaiduRemoteStorageMaker) Make(conf *filer_pb.RemoteConf) (remote_storage.RemoteStorageClient, error) { + client := &s3RemoteStorageClient{ + conf: conf, + } + accessKey := util.Nvl(conf.BaiduAccessKey, os.Getenv("BDCLOUD_ACCESS_KEY")) + secretKey := util.Nvl(conf.BaiduSecretKey, os.Getenv("BDCLOUD_SECRET_KEY")) + + config := &aws.Config{ + Endpoint: aws.String(conf.BaiduEndpoint), + Region: aws.String(conf.BaiduRegion), + S3ForcePathStyle: aws.Bool(true), + } + if accessKey != "" && secretKey != "" { + config.Credentials = credentials.NewStaticCredentials(accessKey, secretKey, "") + } + + sess, err := session.NewSession(config) + if err != nil { + return nil, fmt.Errorf("create baidu session: %v", err) + } + client.conn = s3.New(sess) + return client, nil +} diff --git a/weed/remote_storage/s3/tencent.go b/weed/remote_storage/s3/tencent.go index 2748d259b..e2002cb9a 100644 --- a/weed/remote_storage/s3/tencent.go +++ b/weed/remote_storage/s3/tencent.go @@ -29,11 +29,13 @@ func (s TencentRemoteStorageMaker) Make(conf *filer_pb.RemoteConf) (remote_stora Endpoint: aws.String(conf.TencentEndpoint), S3ForcePathStyle: aws.Bool(true), } - config.Credentials = credentials.NewStaticCredentials(accessKey, secretKey, "") + if accessKey != "" && secretKey != "" { + config.Credentials = credentials.NewStaticCredentials(accessKey, secretKey, "") + } sess, err := session.NewSession(config) if err != nil { - return nil, fmt.Errorf("create aws session: %v", err) + return nil, fmt.Errorf("create tencent session: %v", err) } client.conn = s3.New(sess) return client, nil |
