All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.staros.filestore.S3FileStore Maven / Gradle / Ivy

There is a newer version: 3.4-rc2
Show newest version
// Copyright 2021-present StarRocks, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


package com.staros.filestore;

import com.staros.proto.FileStoreInfo;
import com.staros.proto.FileStoreType;
import com.staros.proto.S3FileStoreInfo;

public class S3FileStore implements FileStore {
    private String bucket;
    private String region;
    private String endpoint;
    private String accessKey;
    private String accessKeySecret;

    public S3FileStore(String bucket, String region, String endpoint, String accessKey, String accessKeySecret) {
        this.bucket = bucket;
        this.region = region;
        this.endpoint = endpoint;
        this.accessKey = accessKey;
        this.accessKeySecret = accessKeySecret;
    }

    // return file store type, 'S3','HDFS' etc
    public FileStoreType type() {
        return FileStoreType.S3;
    }

    // return s3 file store key
    public String key() {
        return bucket;
    }

    // return file store root path
    public String rootPath() {
        return String.format("s3://%s/", bucket);
    }

    public boolean isValid() {
        return true;
    }

    public FileStoreInfo toProtobuf() {
        S3FileStoreInfo.Builder s3fsBuilder = S3FileStoreInfo.newBuilder();
        s3fsBuilder.setBucket(bucket);
        s3fsBuilder.setRegion(region);
        s3fsBuilder.setEndpoint(endpoint);
        s3fsBuilder.setAccessKey(accessKey);
        s3fsBuilder.setAccessKeySecret(accessKeySecret);
        S3FileStoreInfo s3FsInfo = s3fsBuilder.build();

        FileStoreInfo.Builder builder = FileStoreInfo.newBuilder();
        builder.setFsType(FileStoreType.S3);
        builder.setFsKey(key());
        builder.setS3FsInfo(s3FsInfo);
        return builder.build();
    }

    public static FileStore fromProtobuf(FileStoreInfo fsInfo) {
        S3FileStoreInfo s3FsInfo = fsInfo.getS3FsInfo();
        String bucket = s3FsInfo.getBucket();
        String region = s3FsInfo.getRegion();
        String endpoint = s3FsInfo.getEndpoint();
        String ak = s3FsInfo.getAccessKey();
        String sk = s3FsInfo.getAccessKeySecret();
        return new S3FileStore(bucket, region, endpoint, ak, sk);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy