MinIO: Iniziare
Come iniziare a utilizzare MinIO per lo storage di oggetti compatibile con S3
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione MinIO Object Storage pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Trasferimenti illimitati.
- Prezzi semplici, predittivi e trasparenti.
- Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://object-storage.tua-azienda.com).
- Aggiornamenti senza sforzo con un solo clic.
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
- Disponibile in 🇪🇺 Europa e 🇺🇸 USA.
Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione di hosting MinIO Object Storage di Stackhero!
MinIO è un servizio di storage di oggetti che implementa il protocollo Amazon S3. Qualsiasi client compatibile con Amazon S3 può connettersi a MinIO e interagire senza problemi con il tuo storage di oggetti. Una libreria client Amazon S3 è disponibile per quasi tutti i principali linguaggi di programmazione, inclusi Ruby, Node.js, Java, Python, Clojure ed Erlang.
Raccomandiamo di utilizzare gli SDK di MinIO per connettersi al tuo storage di oggetti. Puoi trovare un elenco completo degli SDK disponibili nella documentazione ufficiale di MinIO.
In alternativa, puoi utilizzare la CLI di MinIO. È particolarmente utile per gestire file di grandi dimensioni direttamente dal tuo terminale. Una guida dettagliata sull'uso della CLI di MinIO è disponibile nella documentazione ufficiale della CLI di MinIO.
Utilizzo della CLI di MinIO
La tua istanza Stackhero for MinIO include di default l'interfaccia web MinIO Console. Per compiti più avanzati, puoi scegliere di utilizzare la CLI di MinIO.
Il modo più semplice per provare la CLI di MinIO è eseguire il suo container Docker. Segui questi passaggi:
-
Avvia il container:
docker run -it --entrypoint=/bin/sh minio/mc -
All'interno del container, aggiungi il tuo server utilizzando il seguente comando (sostituisci i valori segnaposto di conseguenza):
mc alias set minio https://<XXXXXX>.stackhero-network.com <ROOT_ACCESS_KEY> <MINIO_ROOT_SECRET_KEY> -
Crea un bucket chiamato "test" per verificare la configurazione:
mc mb minio/test -
Elenca i tuoi bucket:
mc ls minio
Puoi visualizzare ulteriori comandi della CLI di MinIO eseguendo mc --help.
Connessione di Ruby a MinIO
Per prima cosa, installa il gem AWS SDK:
gem install aws-sdk
bundle install
Di seguito è riportato un semplice esempio che dimostra come interagire con MinIO utilizzando l'AWS SDK in Ruby:
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
# operazione put_object
rubys3_client.put_object(
key: 'testobject',
body: 'Hello from MinIO!',
bucket: 'testbucket',
content_type: 'text/plain'
)
# operazione get_object
rubys3_client.get_object(
bucket: 'testbucket',
key: 'testobject',
response_target: 'download_testobject'
)
print "Downloaded 'testobject' as 'download_testobject'."
Per maggiori dettagli, consulta la documentazione Ruby di MinIO.
Connessione di Python a MinIO
Ci sono due modi principali per connettere applicazioni Python a MinIO.
Connessione a MinIO con l'AWS SDK (boto)
Per prima cosa, installa il pacchetto AWS SDK (boto3):
pip install boto3
pip freeze > requirements.txt
Il seguente esempio dimostra come connettersi a MinIO utilizzando 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')
# Carica un file locale '/home/john/piano.mp3' nel bucket 'songs' con il nome oggetto 'piano.mp3'
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')
# Scarica l'oggetto 'piano.mp3' dal bucket 'songs' e salvalo localmente come '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')
print("'piano.mp3' downloaded as 'classical.mp3'.")
Maggiori dettagli sono disponibili nella documentazione Python di MinIO.
Connessione a MinIO con il SDK MinIO
In alternativa, puoi utilizzare il SDK MinIO per Python. Per prima cosa, installa il pacchetto MinIO:
pip install minio
pip freeze > requirements.txt
Di seguito è riportato un esempio che mostra come connettersi a MinIO utilizzando il SDK MinIO:
#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error
def main():
# Crea un client per il tuo server MinIO utilizzando le tue chiavi di accesso e segrete
client = Minio(
endpoint='<XXXXXX>.stackhero-network.com:443',
secure=True,
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY'
)
# Verifica se il bucket 'asiatrip' esiste, e crealo se non esiste
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# Carica '/home/user/Photos/asiaphotos.zip' come 'asiaphotos-2015.zip' nel bucket '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)
Per ulteriori informazioni, consulta la documentazione del SDK Python di MinIO.
Connessione di PHP a MinIO
Per connettere PHP a MinIO, installa prima il pacchetto AWS SDK per PHP:
composer require aws/aws-sdk-php
L'esempio seguente mostra come connettersi a MinIO da PHP utilizzando l'AWS SDK:
<?php
// Includi il SDK utilizzando l'autoloader di Composer
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'
],
]);
// Invia una richiesta PutObject e ottieni il risultato.
$insert = $s3->putObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'Body' => 'Hello from MinIO!'
]);
// Scarica il contenuto dell'oggetto.
$retrieve = $s3->getObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'SaveAs' => 'testkey_local'
]);
// Stampa il corpo del risultato recuperato.
echo $retrieve['Body'];
Connessione di Go a MinIO
Ci sono due opzioni per connettere applicazioni Go a MinIO.
Connessione a MinIO con l'AWS SDK
Per prima cosa, installa i pacchetti AWS SDK per Go:
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
Di seguito è riportato un esempio di come connettersi a MinIO da Go utilizzando l'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")
// Configura per utilizzare il server MinIO
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,
}
// Crea un nuovo bucket
_, err := s3Client.CreateBucket(cparams)
if err != nil {
fmt.Println(err.Error())
return
}
// Carica un nuovo oggetto con la stringa "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)
// Recupera il nostro oggetto e salvalo localmente
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")
}
Per ulteriori letture, visita la documentazione Go di MinIO.
Connessione a MinIO con il SDK MinIO
Per utilizzare il SDK MinIO per Go, installa il seguente pacchetto:
GO111MODULE=on go get github.com/minio/minio-go/v7
Di seguito è riportato un esempio che mostra come connettersi a MinIO utilizzando il SDK MinIO per Go:
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
// Inizializza il client MinIO
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 è ora configurato
}
Per maggiori informazioni, consulta la documentazione del SDK Go di MinIO.
Connessione di Node.js a MinIO
Ci sono due metodi per connettere applicazioni Node.js a MinIO.
Connessione a MinIO con l'AWS SDK
Per prima cosa, installa il pacchetto AWS SDK per Node.js:
npm install aws-sdk
Di seguito è riportato un esempio che mostra come connettersi a MinIO utilizzando l'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, // richiesto con MinIO
signatureVersion: 'v4'
});
// operazione putObject
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');
}
);
// operazione getObject
const file = require('fs').createWriteStream('/tmp/mykey');
s3.getObject({ Bucket: 'testbucket', Key: 'testobject' })
.on('httpData', chunk => file.write(chunk))
.on('httpDone', () => file.end())
.send();
Per ulteriori dettagli, visita la documentazione Node.js di MinIO.
Connessione a MinIO con il SDK MinIO
Se preferisci utilizzare il SDK MinIO per Node.js, installalo utilizzando npm:
npm install minio
Ecco un esempio di come connettersi a MinIO utilizzando il SDK MinIO per Node.js:
const process = require('process');
const Minio = require('minio');
// Instanzia il client MinIO con l'endpoint e le chiavi di accesso
const minioClient = new Minio.Client({
endpoint: '<XXXXXX>.stackhero-network.com',
port: 443,
useSSL: true,
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
});
// File da caricare
const file = '/tmp/photos-europe.tar';
// Crea un bucket chiamato '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
};
// Carica il file nel bucket 'europetrip' utilizzando l'API fPutObject
minioClient.fPutObject(
'europetrip',
'photos-europe.tar',
file,
metaData,
(err, etag) => {
if (err) return console.log(err);
console.log('File uploaded successfully.');
}
);
}
);
Per maggiori informazioni, consulta la documentazione del SDK Node.js di MinIO.