Skip to main content

Object Storage

Object Storage is Sealos' built-in object storage service, which is primarily used to store and manage unstructured data.

Currently, Object Storage has the following features:

  • Upload files to bucket
  • Download files from bucket
  • Expose the access permission of the bucket
  • Use SDK to access bucket
  • Monitors bucket resource metrics

Quick start

Upload files to bucket

Go to Object Storage

Create a bucket

Set bucket name to test and permission to private

Bucket is created successfully

Upload file

File uploaded successfully

Expose the access permission of the bucket

Click the Edit button

Set Bucket Permission to publicRead and click the Application button

Copy file link

Paste to browser address bar to access files

View the access key configuration

An Object Storage user consists of a unique access key (username) and corresponding secret key (password). Internal is the internal access address of Object Storage, and External is the external access address of Object Storage.

Use SDK to access bucket

The SDK requires three parameters to access bucket: AccessKey, SecretKey, and Endpoint (Internal or External). If the Region parameter is required, us-east-1 is used by default.

Go Client SDK

Detailed documentation reference: https://min.io/docs/minio/linux/developers/go/API.html

Example: Use the Go Client SDK to upload the style.css file to the sv3dd7u4-test bucket, and set the endpoint to the external address. If the service is deployed in the K8s cluster, you can change the endpoint to the internal address.

package main

import (
"context"
"fmt"
"log"
"os"
)
import "github.com/minio/minio-go/v7"
import "github.com/minio/minio-go/v7/pkg/credentials"

func main() {
endpoint := "objectstorageapi.xxx.xxx.xxx"
accessKey := "xxxxxxxx"
secretKey := "xxxxxxxxxxxxxxxx"
// init minio client
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
})
if err != nil {
log.Fatalln(err)
}
// get local file
file, err := os.Open("./style.css")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()

fileStat, err := file.Stat()
if err != nil {
fmt.Println(err)
return
}
// put object
uploadInfo, err := minioClient.PutObject(context.Background(), "sv3dd7u4-test", "style.css", file, fileStat.Size(), minio.PutObjectOptions{ContentType: "text/css"})
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Successfully uploaded bytes: ", uploadInfo)
}

File uploaded successfully

Java Client SDK

Detailed documentation reference: https://min.io/docs/minio/linux/developers/java/API.html

Example: Use the Java Client SDK to upload the style1.css file to the sv3dd7u4-test bucket, and set the endpoint to the external address. If the service is deployed in the K8s cluster, you can change the endpoint to the internal address.


<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.9</version>
</dependency>
package org.example;

import io.minio.MinioClient;
import io.minio.UploadObjectArgs;

public class FileUploader {
public static void main(String[] args) throws Exception {

MinioClient minioClient =
MinioClient.builder()
.endpoint("https://objectstorageapi.xxx.xxx.xxx")
.credentials("xxxxxxxx", "xxxxxxxxxxxxxxxx")
.build();


minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("sv3dd7u4-test")
.object("style1.css")
.filename("src/main/java/org/example/style1.css")
.build());

System.out.println("Successfully uploaded bytes.");
}
}

File uploaded successfully

Omit other language SDK

Detailed documentation reference: https://min.io/docs/minio/linux/developers/minio-drivers.html