16 #ifndef FLEX_UTILS_REMOTE_OSS_STORAGE_H_
17 #define FLEX_UTILS_REMOTE_OSS_STORAGE_H_
23 #include "flex/third_party/aliyun-oss-cpp-sdk/sdk/include/alibabacloud/oss/OssClient.h"
24 #include "flex/third_party/aliyun-oss-cpp-sdk/sdk/include/alibabacloud/oss/client/ClientConfiguration.h"
31 static constexpr
const char* kOSSAccessKeyId =
"OSS_ACCESS_KEY_ID";
32 static constexpr
const char* kOSSAccessKeySecret =
"OSS_ACCESS_KEY_SECRET";
33 static constexpr
const char* kOSSEndpoint =
"OSS_ENDPOINT";
34 static constexpr
const char* kOSSBucketName =
"OSS_BUCKET_NAME";
36 std::string accesskey_id_;
37 std::string accesskey_secret_;
38 std::string endpoint_;
39 std::string bucket_name_;
40 int32_t uploading_concurrency_ = 4;
41 uint64_t partition_size_ = 1024 * 1024 * 128;
42 AlibabaCloud::OSS::ClientConfiguration client_conf_;
44 void load_conf_from_env();
47 class OSSRemoteStorageUploader :
public RemoteStorageUploader {
49 OSSRemoteStorageUploader(OSSConf conf = {}) : conf_(conf) {}
51 ~OSSRemoteStorageUploader()
override =
default;
55 Status Open()
override;
57 Status Put(
const std::string& local_path,
const std::string& remote_path,
58 bool override =
false)
override;
60 Status Delete(
const std::string& remote_path)
override;
62 Status Close()
override;
66 std::shared_ptr<AlibabaCloud::OSS::OssClient> client_;
69 class OSSRemoteStorageDownloader :
public RemoteStorageDownloader {
71 OSSRemoteStorageDownloader(OSSConf conf = {}) : conf_(conf) {}
73 ~OSSRemoteStorageDownloader()
override =
default;
75 Status Open()
override;
77 Status Get(
const std::string& remote_path,
78 const std::string& local_path)
override;
80 Status List(
const std::string& remote_path,
81 std::vector<std::string>& list)
override;
83 Status Close()
override;
86 bool get_metadata_etag(
const std::string& remote_path, std::string& etag);
88 std::shared_ptr<AlibabaCloud::OSS::OssClient> client_;
92 #endif // BUILD_WITH_OSS
94 #endif // FLEX_UTILS_REMOTE_OSS_STORAGE_H_