Tất cả tài liệu

FPT Object Storage

    SDK API Reference
    SDK API Reference
    Updated on 29 Mar 2024

    FPT Object Storage là một sản phẩm được phát triển dựa trên tiêu chuẩn AWS S3. Vì vậy bạn có thể sử dụng tất cả các công cụ và thư viện đã được phát triển cho AWS S3 để tương tác với FPT Object Storage. Dưới đây là hướng dẫn cài đặt và config kết nối mẫu của một số ngôn ngữ thông dụng.

    Python

    Với Python, bạn có thể sử dụng thư viện boto3. Đây là thư viện chính thức của Amazon cho Python.

    Cài đặt

    pip install boto3

    Khởi tạo kết nối

    import boto3
    # Set up connection information
    s3_endpoint = "ENDPOINT"
    s3_access_key_id = "ACCESS_KEY_ID"
    s3_secret_access_key = "SECRET_KEY_ID"
    s3 = boto3.resource(
        "s3",
        endpoint_url=s3_endpoint,
        aws_access_key_id=s3_access_key_id,
        aws_secret_access_key=s3_secret_access_key,
    )
    
    s3client = boto3.client(
        "s3",
        endpoint_url=s3_endpoint,
        aws_access_key_id=s3_access_key_id,
        aws_secret_access_key=s3_secret_access_key,
    )
    

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    # Create a new bucket
    s3client.create_bucket(Bucket=bucket_name)
    -------------------------------------------
    # Delete the bucket
    s3client.delete_bucket(Bucket=bucket_name)
    -------------------------------------------
    # Create a new object
    s3client.put_object(Bucket=bucket_name, Key=object_key, Body=content)
    -------------------------------------------
    # Read the content of the object
    response = s3client.get_object(Bucket=bucket_name, Key=object_key)
    object_content = response['Body'].read().decode('utf-8')
    print(object_content)
    -------------------------------------------
    # Delete the object
    s3client.delete_object(Bucket=bucket_name, Key=object_key)

    Tài liệu đầy đủ

    Refer: https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

    Java

    Để sử dụng FPT Object Storage trong Java, bạn có thể sử dụng các thư viện hỗ trợ như AWS SDK for Java, MinIO hoặc s3proxy.

    Dưới đây là một hướng dẫn sử dụng AWS SDK for Java, một trong những thư viện phổ biến nhất để kết nối và thao tác với FPT Object Storage:

    Cài đặt

    //Tạo 1 project maven
    //Thêm vào file pom.xml dependency sau :
    
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
        <version>2.17.42</version> <!-- Đảm bảo sử dụng phiên bản mới nhất -->
    </dependency>

    Khởi tạo kết nối

    // Thay đổi các giá trị này theo thông tin tài khoản S3-compatible của bạn
    String accessKey = "ACCESS_KEY_ID";
    String secretKey = "SECRET_KEY_ID";
    String endpoint = "ENDPOINT";
    String bucketName = "YOUR_BUCKET_NAME";
    // Tạo client S3
    S3Client s3Client = S3Client.builder()
        .endpointOverride(URI.create(endpoint))
        .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
        .build();

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    import java.net.URI;
    import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
    import software.amazon.awssdk.regions.Region;
    import software.amazon.awssdk.services.s3.S3Client;
    import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
    import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
    import software.amazon.awssdk.services.s3.model.S3Object;
    public class S3Example {
        public static void main(String[] args) {
            // Thay đổi các giá trị này theo thông tin tài khoản S3-compatible của bạn
            String accessKey = "ACCESS_KEY_ID";
            String secretKey = "SECRET_KEY_ID";
            String endpoint = "ENDPOINT";
            String bucketName = "<YOUR_BUCKET_NAME>";
            // Tạo client S3
            S3Client s3Client = S3Client.builder()
                .endpointOverride(URI.create(endpoint))
                .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)))
                .build();
            // Thực hiện các thao tác S3 tại đây, ví dụ: list objects
            ListObjectsRequest listObjectsRequest = ListObjectsRequest.builder()
                .bucket(bucketName)
                .build();
            ListObjectsResponse listObjectsResponse = s3Client.listObjects(listObjectsRequest);
            for (S3Object content: listObjectsResponse.contents()) {
                System.out.println("Object Key: " + content.key());
            }
            // Đóng client khi đã sử dụng xong
            s3Client.close();
        }
    }

    Tài liệu đầy đủ

    Refer: https://docs.aws.amazon.com/sdk-for-java/

    C-Sharp

    FPT Object Storage được thiết kế tương thích với Amazon S3, vì vậy bạn có thể sử dụng S3 SDK for C# được cung cấp bới AWS để tương tác với FPT Object Storage. Dưới đây là một số hướng dẫn cơ bản:

    Cài đặt

    // Cài đặt bằng NuGet Package Manager
    Install-Package AWSSDK -Version 2.3.55.2

    Khởi tạo kết nối

    string accessKey = "ACCESS_KEY_ID";
    string secretKey = "SECRET_KEY_ID";
    AmazonS3Config config = new AmazonS3Config();
    config.ServiceURL = "<ENDPOINT>";
    config.ForcePathStyle = true;
    AmazonS3Client client = new AmazonS3Client(
      accessKey,
      secretKey,
      config
    );

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    // Cài đặt bằng NuGet Package Manager
    // Install-Package AWSSDK -Version 3.7.0
    using Amazon.S3;
    using Amazon.S3.Model;
    class Program {
      static void Main() {
        // Khởi tạo kết nối
        string accessKey = "ACCESS_KEY_ID";
        string secretKey = "SECRET_KEY_ID";
        AmazonS3Config config = new AmazonS3Config {
          ServiceURL = "ENDPOINT",
            ForcePathStyle = true
        };
        using(AmazonS3Client client = new AmazonS3Client(accessKey, secretKey, config)) {
          // Một số ví dụ cơ bản
          // Tạo một bucket mới
          string bucketName = "my-unique-bucket-name";
          client.PutBucket(new PutBucketRequest {
            BucketName = bucketName
          });
          // Xóa bucket
          client.DeleteBucket(new DeleteBucketRequest {
            BucketName = bucketName
          });
          // Tạo một object mới
          string objectKey = "my-object-key";
          string content = "Hello, world!";
          client.PutObject(new PutObjectRequest {
            BucketName = bucketName,
              Key = objectKey,
              ContentBody = content
          });
          // Đọc nội dung của object
          GetObjectResponse response = client.GetObject(new GetObjectRequest {
            BucketName = bucketName,
              Key = objectKey
          });
          using(var reader = new System.IO.StreamReader(response.ResponseStream)) {
            string objectContent = reader.ReadToEnd();
            Console.WriteLine(objectContent);
          }
          // Xóa object
          client.DeleteObject(new DeleteObjectRequest {
            BucketName = bucketName,
              Key = objectKey
          });
        }
      }
    }

    Tài liệu đầy đủ

    Refer: https://aws.amazon.com/sdk-for-net/

    PHP

    Cài đặt

    // Có nhiều cách để cài đặt PHP SDK
    // 1. Sử dụng Composer
    php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
    
    // require composer autoload
    <?php
    require '/path/to/vendor/autoload.php';
    ?>
    
    // 2. Sử dụng Packaged Phar
    // Download tại http://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.phar và require vào script
    <?php
    require '/path/to/aws.phar';
    ?>
    
    // 3. Sử dụng gói zip
    // Download tại http://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip và require vào script
    <?php
    require '/path/to/aws-autoloader.php';
    ?>
    

    Khởi tạo kết nối

    <?php
    $accessKey = "ACCESS_KEY_ID";
    $secretKey = "SECRET_KEY_ID";
    $credentials = new Aws\Credentials\Credentials($accessKey, $secretKey);
    
    $options = [
        "version" => "latest",
        "region" => "<REGION>",
        "signature_version" => "v4",
        "credentials" => $credentials,
        "endpoint" => "<ENDPOINT>",
    ];
    
    $s3Client = new Aws\S3\S3Client($options);

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    // Cài đặt bằng Composer
    // php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
    // Require composer autoload*
    <?php require "/path/to/vendor/autoload.php"; ?>
    <?php // Khởi tạo kết nối
    
    $accessKey = "ACCESS_KEY_ID";
    $secretKey = "SECRET_KEY_ID";
    $credentials = new Aws\Credentials\Credentials($accessKey, $secretKey);
    $options = [
        "version" => "latest",
        "region" => "<REGION>",
        "signature_version" => "v4",
        "credentials" => $credentials,
        "endpoint" => '"ENDPOINT"',
    ];
    $s3Client = new Aws\S3\S3Client($options); // Một số ví dụ cơ bản // Tạo một bucket mới
    $bucketName = "my-unique-bucket-name";
    $s3Client->createBucket(["Bucket" => $bucketName]); // Xóa bucket
    $s3Client->deleteBucket(["Bucket" => $bucketName]); // Tạo một object mới
    $objectKey = "my-object-key";
    $content = "Hello, world!";
    $s3Client->putObject([
        "Bucket" => $bucketName,
        "Key" => $objectKey,
        "Body" => $content,
    ]);
    // Đọc nội dung của object
    $result = $s3Client->getObject(["Bucket" => $bucketName, "Key" => $objectKey]);
    $objectContent = $result["Body"]->getContents();
    echo $objectContent; // Xóa object
    $s3Client->deleteObject(["Bucket" => $bucketName, "Key" => $objectKey]);
     ?>
    

    Tài liệu đầy đủ

    Refer: https://docs.aws.amazon.com/sdk-for-php/

    Javascript

    Cài đặt

    // Để cài đặt Javascript SDK
    // 1. Tải bản sdk cho releases tại địa chỉ: https://github.com/aws/aws-sdk-js/releases
    // 2. Giải nén thư mục dist/ của bản sdk
    // 3. Sử dụng file sdk cho trình duyệt băng cách nhúng vào file html sử dụng
    
    // 4. Cấu hình CORS cho bucket theo hướng dẫn : https://fptcloud.com/documents/object-storage/?doc=tutorials-bucket-config
    

    Khởi tạo kết nối

    accessKey = "ACCESS_KEY_ID";
    secretKey = "SECRET_KEY_ID";
    AWS.config.update({
        accessKeyId: accessKey,
        secretAccessKey: secretKey,
        region: '<REGION>',
        endpoint: '<ENDPOINT>',
        apiVersions: {
            s3: '2006-03-01'
        }
    })
    const s3 = new AWS.S3()
    

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    <!-- Cài đặt Javascript SDK -->
    <!-- 1. Tải bản sdk cho releases tại địa chỉ: https://github.com/aws/aws-sdk-js/releases -->
    <!-- 2. Giải nén thư mục dist/ của bản sdk -->
    <!-- 3. Sử dụng file sdk cho trình duyệt bằng cách nhúng vào file HTML sử dụng -->
    <
    script >
        // Khởi tạo kết nối
        var accessKey = "<ACCESS_KEY_ID>";
    var secretKey = "<SECRET_KEY_ID>";
    
    AWS.config.update({
        accessKeyId: accessKey,
        secretAccessKey: secretKey,
        region: '<REGION>',
        endpoint: '<ENDPOINT>',
        apiVersions: {
            s3: '2006-03-01'
        }
    });
    
    var s3 = new AWS.S3();
    
    // Một số ví dụ cơ bản
    
    // Tạo một bucket mới
    var bucketName = "my-unique-bucket-name";
    s3.createBucket({
        Bucket: bucketName
    }, function(err, data) {
        if (err) console.log(err, err.stack);
        else console.log("Bucket created:", data);
    });
    
    // Xóa bucket
    s3.deleteBucket({
        Bucket: bucketName
    }, function(err, data) {
        if (err) console.log(err, err.stack);
        else console.log("Bucket deleted:", data);
    });
    
    // Tạo một object mới
    var objectKey = "my-object-key";
    var content = "Hello, world!";
    s3.putObject({
        Bucket: bucketName,
        Key: objectKey,
        Body: content
    }, function(err, data) {
        if (err) console.log(err, err.stack);
        else console.log("Object created:", data);
    });
    
    // Đọc nội dung của object
    s3.getObject({
        Bucket: bucketName,
        Key: objectKey
    }, function(err, data) {
        if (err) console.log(err, err.stack);
        else console.log("Object content:", data.Body.toString('utf-8'));
    });
    
    // Xóa object
    s3.deleteObject({
        Bucket: bucketName,
        Key: objectKey
    }, function(err, data) {
        if (err) console.log(err, err.stack);
        else console.log("Object deleted:", data);
    }); <
    /script>

    Tài liệu đầy đủ

    Refer: https://docs.aws.amazon.com/sdk-for-javascript/

    NodeJS

    Cài đặt

    npm install [email protected]

    Khởi tạo kết nối

    const AWS = require('aws-sdk')
    AWS.config.update({
        accessKeyId: `"ACCESS_KEY_ID" `,
        secretAccessKey: `"SECRET_KEY_ID"`,
        region: '<REGION>', 
        endpoint: '"ENDPOINT"',
        apiVersions: {
          s3: '2006-03-01'
        },
        logger: process.stdout
    })

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    // Cài đặt
    // npm install [email protected]
    
    const AWS = require('aws-sdk');
    
    // Khởi tạo kết nối
    AWS.config.update({
        accessKeyId: '"ACCESS_KEY_ID"',
        secretAccessKey: '"SECRET_KEY_ID"',
        region: '<REGION>',
        endpoint: '"ENDPOINT"',
        apiVersions: {
            s3: '2006-03-01',
        },
        logger: process.stdout,
    });
    
    const s3 = new AWS.S3();
    
    // Một số ví dụ cơ bản
    
    // Tạo một bucket mới
    const bucketName = 'my-unique-bucket-name';
    s3.createBucket({ Bucket: bucketName }, (err, data) => {
        if (err) console.error(err, err.stack);
        else console.log('Bucket created:', data);
    });
    
    // Xóa bucket
    s3.deleteBucket({ Bucket: bucketName }, (err, data) => {
        if (err) console.error(err, err.stack);
        else console.log('Bucket deleted:', data);
    });
    
    // Tạo một object mới
    const objectKey = 'my-object-key';
    const content = 'Hello, world!';
    s3.putObject({ Bucket: bucketName, Key: objectKey, Body: content }, (err, data) => {
        if (err) console.error(err, err.stack);
        else console.log('Object created:', data);
    });
    
    // Đọc nội dung của object
    s3.getObject({ Bucket: bucketName, Key: objectKey }, (err, data) => {
        if (err) console.error(err, err.stack);
        else console.log('Object content:', data.Body.toString('utf-8'));
    });
    
    // Xóa object
    s3.deleteObject({ Bucket: bucketName, Key: objectKey }, (err, data) => {
        if (err) console.error(err, err.stack);
        else console.log('Object deleted:', data);
    });

    Tài liệu đầy đủ

    Refer: https://github.com/aws/aws-sdk-js/

    Go

    Cài đặt

    go get "github.com/aws/aws-sdk-go/aws"

    Khởi tạo kết nối

    s3Config := &aws.Config{
        Credentials: credentials.NewStaticCredentials("ACCESS_KEY_ID", "SECRET_KEY_ID", ""),
        Endpoint:    aws.String("ENDPOINT"),
        Region:      aws.String("REGION"),
    }
    newSession := session.New(s3Config)
    Client = s3.New(newSession)

    Trong đó "ACCESS_KEY_ID", "SECRET_KEY_ID" và "ENDPOINT" được lấy từ FPT Unify Portal theo hướng dẫn tại link này.

    Một số ví dụ cơ bản

    package main
    
    import (
        "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"
        "log"
    )
    
    var Client *s3.S3
    
    func main() {
        // Khởi tạo kết nối
        s3Config := &aws.Config{
            Credentials: credentials.NewStaticCredentials("ACCESS_KEY_ID", "SECRET_KEY_ID", ""),
            Endpoint:    aws.String("ENDPOINT"),
            Region:      aws.String("REGION"),
        }
        newSession := session.New(s3Config)
        Client = s3.New(newSession)
    
        // Một số ví dụ cơ bản
    
        // Tạo một bucket mới
        bucketName := "my-unique-bucket-name"
        _, err := Client.CreateBucket(&s3.CreateBucketInput{
            Bucket: aws.String(bucketName),
        })
        if err != nil {
            log.Fatal(err)
        }
        log.Println("Bucket created:", bucketName)
    
        // Xóa bucket
        _, err = Client.DeleteBucket(&s3.DeleteBucketInput{
            Bucket: aws.String(bucketName),
        })
        if err != nil {
            log.Fatal(err)
        }
        log.Println("Bucket deleted:", bucketName)
    
        // Tạo một object mới
        objectKey := "my-object-key"
        content := "Hello, world!"
        _, err = Client.PutObject(&s3.PutObjectInput{
            Bucket: aws.String(bucketName),
            Key:    aws.String(objectKey),
            Body:   aws.String(content),
        })
        if err != nil {
            log.Fatal(err)
        }
        log.Println("Object created:", objectKey)
    
        // Đọc nội dung của object
        result, err := Client.GetObject(&s3.GetObjectInput{
            Bucket: aws.String(bucketName),
            Key:    aws.String(objectKey),
        })
        if err != nil {
            log.Fatal(err)
        }
        log.Println("Object content:", result.Body)
    
        // Xóa object
        _, err = Client.DeleteObject(&s3.DeleteObjectInput{
            Bucket: aws.String(bucketName),
            Key:    aws.String(objectKey),
        })
        if err != nil {
            log.Fatal(err)
        }
        log.Println("Object deleted:", objectKey)
    }

    Tài liệu đầy đủ

    Refer: https://docs.aws.amazon.com/sdk-for-go/