MinIO: Pradžia

Kaip pradėti naudoti MinIO S3 suderinamam objektų saugojimui

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti MinIO Object Storage sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Neriboti perdavimai.
  • Paprasta, prognozuojama ir skaidri kainodara.
  • Pritaikomas domeno vardas, apsaugotas HTTPS (pavyzdžiui, https://object-storage.jusu-imone.com).
  • Lengvi atnaujinimai vienu paspaudimu.
  • Optimali veikla ir tvirta sauga, užtikrinama privačios ir dedikuotos VM.
  • Prieinama 🇪🇺 Europoje ir 🇺🇸 JAV.

Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero MinIO Object Storage hosting sprendimą!

MinIO yra objektų saugojimo paslauga, įgyvendinanti Amazon S3 protokolą. Bet kuris Amazon S3 suderinamas klientas gali prisijungti prie MinIO ir sklandžiai sąveikauti su jūsų objektų saugykla. Amazon S3 klientų biblioteka yra prieinama beveik visoms pagrindinėms programavimo kalboms, įskaitant Ruby, Node.js, Java, Python, Clojure ir Erlang.

Rekomenduojame naudoti MinIO SDK, kad prisijungtumėte prie savo objektų saugyklos. Visą prieinamų SDK sąrašą galite rasti oficialioje MinIO dokumentacijoje.

Alternatyviai galite naudoti MinIO CLI. Tai ypač naudinga valdant didelius failus tiesiai iš jūsų terminalo. Išsamios instrukcijos, kaip naudoti MinIO CLI, pateikiamos oficialioje MinIO CLI dokumentacijoje.

Jūsų Stackhero for MinIO instancija pagal numatymą apima MinIO Console žiniatinklio sąsają. Sudėtingesnėms užduotims galite pasirinkti naudoti MinIO CLI.

Paprasčiausias būdas išbandyti MinIO CLI yra paleisti jo Docker konteinerį. Vykdykite šiuos veiksmus:

  1. Paleiskite konteinerį:

    docker run -it --entrypoint=/bin/sh minio/mc
    
  2. Konteineryje pridėkite savo serverį naudodami šią komandą (atitinkamai pakeiskite vietos rezervavimo reikšmes):

    mc alias set minio https://<XXXXXX>.stackhero-network.com <ROOT_ACCESS_KEY> <MINIO_ROOT_SECRET_KEY>
    
  3. Sukurkite kibirą pavadinimu "test", kad patikrintumėte nustatymus:

    mc mb minio/test
    
  4. Išvardinkite savo kibirus:

    mc ls minio
    

Papildomas MinIO CLI komandas galite peržiūrėti vykdydami mc --help.

Pirmiausia įdiekite AWS SDK gem:

gem install aws-sdk
bundle install

Žemiau pateiktas paprastas pavyzdys, kaip sąveikauti su MinIO naudojant AWS SDK Ruby kalba:

require 'aws-sdk'

Aws.config.update(
  endpoint: 'https://<XXXXXX>.stackhero-network.com',
  access_key_id: 'YOUR_ACCESS_KEY',
  secret_access_key: 'YOUR_SECRET_KEY',
  force_path_style: true,
  region: 'us-east-1'
)

rubys3_client = Aws::S3::Client.new

# put_object operacija
rubys3_client.put_object(
  key: 'testobject',
  body: 'Hello from MinIO!',
  bucket: 'testbucket',
  content_type: 'text/plain'
)

# get_object operacija
rubys3_client.get_object(
  bucket: 'testbucket',
  key: 'testobject',
  response_target: 'download_testobject'
)

print "Downloaded 'testobject' as 'download_testobject'."

Daugiau informacijos rasite MinIO Ruby dokumentacijoje.

Yra du pagrindiniai būdai, kaip prijungti Python programas prie MinIO.

Pirmiausia įdiekite AWS SDK paketą (boto3):

pip install boto3
pip freeze > requirements.txt

Šis pavyzdys parodo, kaip prisijungti prie MinIO naudojant boto3:

#!/usr/bin/env python
import os
import boto3
from botocore.client import Config

s3 = boto3.resource('s3',
                    endpoint_url='https://<XXXXXX>.stackhero-network.com',
                    aws_access_key_id='YOUR_ACCESS_KEY',
                    aws_secret_access_key='YOUR_SECRET_KEY',
                    config=Config(signature_version='s3v4'),
                    region_name='us-east-1')

# Įkelkite vietinį failą '/home/john/piano.mp3' į kibirą 'songs' su objekto pavadinimu 'piano.mp3'
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')

# Atsisiųskite objektą 'piano.mp3' iš kibiro 'songs' ir išsaugokite jį vietoje kaip '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')

print("'piano.mp3' downloaded as 'classical.mp3'.")

Daugiau informacijos rasite MinIO Python dokumentacijoje.

Alternatyviai galite naudoti MinIO SDK Python kalbai. Pirmiausia įdiekite MinIO paketą:

pip install minio
pip freeze > requirements.txt

Žemiau pateiktas pavyzdys, kaip prisijungti prie MinIO naudojant MinIO SDK:

#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error

def main():
  # Sukurkite klientą savo MinIO serveriui naudodami savo prieigos ir slaptus raktus
  client = Minio(
    endpoint='<XXXXXX>.stackhero-network.com:443',
    secure=True,
    access_key='YOUR_ACCESS_KEY',
    secret_key='YOUR_SECRET_KEY'
  )

  # Patikrinkite, ar kibiras 'asiatrip' egzistuoja, ir sukurkite jį, jei ne
  found = client.bucket_exists("asiatrip")
  if not found:
    client.make_bucket("asiatrip")
  else:
    print("Bucket 'asiatrip' already exists")

  # Įkelkite '/home/user/Photos/asiaphotos.zip' kaip 'asiaphotos-2015.zip' į kibirą 'asiatrip'
  client.fput_object(
    "asiatrip", "asiaphotos-2015.zip", "/home/user/Photos/asiaphotos.zip"
  )
  print(
    "'/home/user/Photos/asiaphotos.zip' has been successfully uploaded as "
    "object 'asiaphotos-2015.zip' to bucket 'asiatrip'."
  )


if __name__ == "__main__":
  try:
    main()
  except S3Error as exc:
    print("An error occurred.", exc)

Daugiau informacijos rasite MinIO Python SDK dokumentacijoje.

Norėdami prijungti PHP prie MinIO, pirmiausia įdiekite AWS SDK PHP paketą:

composer require aws/aws-sdk-php

Žemiau pateiktas pavyzdys, kaip prisijungti prie MinIO iš PHP naudojant AWS SDK:

<?php

// Įtraukite SDK naudodami Composer autoloader
date_default_timezone_set('America/Los_Angeles');
require 'vendor/autoload.php';

$s3 = new Aws\S3\S3Client([
  'version' => 'latest',
  'region'  => 'us-east-1',
  'endpoint' => 'https://<XXXXXX>.stackhero-network.com',
  'use_path_style_endpoint' => true,
  'credentials' => [
    'key'    => 'YOUR_ACCESS_KEY',
    'secret' => 'YOUR_SECRET_KEY'
  ],
]);

// Siųskite PutObject užklausą ir gaukite rezultatą.
$insert = $s3->putObject([
  'Bucket' => 'testbucket',
  'Key'    => 'testkey',
  'Body'   => 'Hello from MinIO!'
]);

// Atsisiųskite objekto turinį.
$retrieve = $s3->getObject([
  'Bucket' => 'testbucket',
  'Key'    => 'testkey',
  'SaveAs' => 'testkey_local'
]);

// Atspausdinkite gauto rezultato turinį.
echo $retrieve['Body'];

Yra dvi galimybės prijungti Go programas prie MinIO.

Pirmiausia įdiekite AWS SDK paketus Go kalbai:

go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config

Žemiau pateiktas pavyzdys, kaip prisijungti prie MinIO iš Go naudojant AWS SDK:

package main

import (
  "fmt"
  "os"
  "strings"

  "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/aws/aws-sdk-go/service/s3/s3manager"
)

func main() {
  bucket := aws.String("newbucket")
  key := aws.String("testobject")

  // Konfigūruokite naudoti MinIO serverį
  s3Config := &aws.Config{
    Credentials:      credentials.NewStaticCredentials("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY", ""),
    Endpoint:         aws.String("https://<XXXXXX>.stackhero-network.com"),
    Region:           aws.String("us-east-1"),
    DisableSSL:       aws.Bool(false),
    S3ForcePathStyle: aws.Bool(true),
  }
  newSession := session.New(s3Config)

  s3Client := s3.New(newSession)

  cparams := &s3.CreateBucketInput{
    Bucket: bucket,
  }

  // Sukurkite naują kibirą
  _, err := s3Client.CreateBucket(cparams)
  if err != nil {
    fmt.Println(err.Error())
    return
  }

  // Įkelkite naują objektą su tekstu "Hello from MinIO!"
  _, err = s3Client.PutObject(&s3.PutObjectInput{
    Body:   strings.NewReader("Hello from MinIO!"),
    Bucket: bucket,
    Key:    key,
  })
  if err != nil {
    fmt.Printf("Failed to upload data to %s/%s, %s\n", *bucket, *key, err.Error())
    return
  }
  fmt.Printf("Successfully created bucket %s and uploaded data with key %s\n", *bucket, *key)

  // Atsisiųskite mūsų objektą ir išsaugokite jį vietoje
  file, err := os.Create("testobject_local")
  if err != nil {
    fmt.Println("Failed to create file", err)
    return
  }
  defer file.Close()

  downloader := s3manager.NewDownloader(newSession)
  numBytes, err := downloader.Download(file,
    &s3.GetObjectInput{
      Bucket: bucket,
      Key:    key,
    })
  if err != nil {
    fmt.Println("Failed to download file", err)
    return
  }
  fmt.Println("Downloaded file", file.Name(), numBytes, "bytes")
}

Papildomai skaitykite MinIO Go dokumentaciją.

Norėdami naudoti MinIO SDK Go kalbai, įdiekite šį paketą:

GO111MODULE=on go get github.com/minio/minio-go/v7

Žemiau pateiktas pavyzdys, kaip prisijungti prie MinIO naudojant MinIO SDK Go kalbai:

package main

import (
  "log"

  "github.com/minio/minio-go/v7"
  "github.com/minio/minio-go/v7/pkg/credentials"
)

func main() {
  endpoint := "<XXXXXX>.stackhero-network.com"
  accessKeyID := "YOUR_ACCESS_KEY"
  secretAccessKey := "YOUR_SECRET_KEY"
  useSSL := true

  // Inicializuokite MinIO klientą
  minioClient, err := minio.New(endpoint, &minio.Options{
    Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
    Secure: useSSL,
  })
  if err != nil {
    log.Fatalln(err)
  }

  log.Printf("%#v\n", minioClient) // minioClient dabar nustatytas
}

Daugiau informacijos rasite MinIO Go SDK dokumentacijoje.

Yra du būdai, kaip prijungti Node.js programas prie MinIO.

Pirmiausia įdiekite AWS SDK paketą Node.js kalbai:

npm install aws-sdk

Žemiau pateiktas pavyzdys, kaip prisijungti prie MinIO naudojant AWS SDK:

const process = require('process');
const AWS = require('aws-sdk');

const s3 = new AWS.S3({
  accessKeyId: 'YOUR_ACCESS_KEY',
  secretAccessKey: 'YOUR_SECRET_KEY',
  endpoint: 'https://<XXXXXX>.stackhero-network.com',
  s3ForcePathStyle: true, // reikalinga su MinIO
  signatureVersion: 'v4'
});

// putObject operacija
s3.putObject(
  { Bucket: 'testbucket', Key: 'testobject', Body: 'Hello from MinIO!' },
  (err, data) => {
    if (err)
      console.log(err);
    else
      console.log('Successfully uploaded data to testbucket/testobject');
  }
);

// getObject operacija
const file = require('fs').createWriteStream('/tmp/mykey');
s3.getObject({ Bucket: 'testbucket', Key: 'testobject' })
  .on('httpData', chunk => file.write(chunk))
  .on('httpDone', () => file.end())
  .send();

Daugiau informacijos rasite MinIO Node.js dokumentacijoje.

Jei norite naudoti MinIO SDK Node.js kalbai, įdiekite jį naudodami npm:

npm install minio

Žemiau pateiktas pavyzdys, kaip prisijungti prie MinIO naudojant MinIO SDK Node.js kalbai:

const process = require('process');
const Minio = require('minio');

// Inicializuokite MinIO klientą su endpoint ir prieigos raktais
const minioClient = new Minio.Client({
  endpoint: '<XXXXXX>.stackhero-network.com',
  port: 443,
  useSSL: true,
  accessKeyId: 'YOUR_ACCESS_KEY',
  secretAccessKey: 'YOUR_SECRET_KEY',
});

// Failas, kurį reikia įkelti
const file = '/tmp/photos-europe.tar';

// Sukurkite kibirą pavadinimu 'europetrip'
minioClient.makeBucket(
  'europetrip',
  'us-east-1',
  err => {
    if (err) return console.log(err);

    console.log('Bucket created successfully in "us-east-1".');

    const metaData = {
      'Content-Type': 'application/octet-stream',
      'X-Amz-Meta-Testing': 1234,
      'example': 5678
    };
    // Įkelkite failą į kibirą 'europetrip' naudodami fPutObject API
    minioClient.fPutObject(
      'europetrip',
      'photos-europe.tar',
      file,
      metaData,
      (err, etag) => {
        if (err) return console.log(err);
        console.log('File uploaded successfully.');
      }
    );
  }
);

Daugiau informacijos rasite MinIO Node.js SDK dokumentacijoje.