MinIO: Aan de slag
Hoe te beginnen met het gebruik van MinIO voor S3-compatibele objectopslag
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een kant-en-klare MinIO Object Storage oplossing die tal van voordelen biedt, waaronder:
- Onbeperkte overdrachten.
- Eenvoudige, voorspelbare en transparante prijzen.
- Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://object-storage.uw-bedrijf.com).
- Moeiteloze updates met slechts één klik.
- Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
- Beschikbaar in 🇪🇺 Europa en 🇺🇸 USA.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de MinIO Object Storage hosting oplossing van Stackhero te proberen!
MinIO is een objectopslagdienst die het Amazon S3-protocol implementeert. Elke Amazon S3-compatibele client kan verbinding maken met MinIO en naadloos met uw objectopslag werken. Een Amazon S3-clientbibliotheek is beschikbaar voor bijna elke grote programmeertaal, waaronder Ruby, Node.js, Java, Python, Clojure en Erlang.
We raden aan om de MinIO SDK's te gebruiken om verbinding te maken met uw objectopslag. U kunt een volledige lijst van beschikbare SDK's vinden in de officiële documentatie van MinIO.
Als alternatief kunt u de MinIO CLI gebruiken. Deze is vooral handig voor het beheren van grote bestanden direct vanuit uw terminal. Gedetailleerde instructies over het gebruik van de MinIO CLI zijn beschikbaar in de officiële documentatie van de MinIO CLI.
Het gebruik van de MinIO CLI
Uw Stackhero for MinIO-instantie bevat standaard de MinIO Console web-UI. Voor meer geavanceerde taken kunt u ervoor kiezen om de MinIO CLI te gebruiken.
De eenvoudigste manier om de MinIO CLI uit te proberen is door de Docker-container uit te voeren. Volg deze stappen:
-
Start de container:
docker run -it --entrypoint=/bin/sh minio/mc -
Voeg binnen de container uw server toe met behulp van de volgende opdracht (vervang de plaatsaanduidingen dienovereenkomstig):
mc alias set minio https://<XXXXXX>.stackhero-network.com <ROOT_ACCESS_KEY> <MINIO_ROOT_SECRET_KEY> -
Maak een bucket genaamd "test" om de configuratie te verifiëren:
mc mb minio/test -
Lijst uw buckets op:
mc ls minio
U kunt aanvullende MinIO CLI-opdrachten bekijken door mc --help uit te voeren.
Ruby verbinden met MinIO
Installeer eerst de AWS SDK-gem:
gem install aws-sdk
bundle install
Hieronder staat een eenvoudig voorbeeld dat laat zien hoe u met MinIO kunt werken met behulp van de 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
# put_object operatie
rubys3_client.put_object(
key: 'testobject',
body: 'Hello from MinIO!',
bucket: 'testbucket',
content_type: 'text/plain'
)
# get_object operatie
rubys3_client.get_object(
bucket: 'testbucket',
key: 'testobject',
response_target: 'download_testobject'
)
print "Downloaded 'testobject' as 'download_testobject'."
Voor meer details, bekijk de MinIO Ruby documentatie.
Python verbinden met MinIO
Er zijn twee primaire manieren om Python-applicaties met MinIO te verbinden.
Verbinden met MinIO met de AWS SDK (boto)
Installeer eerst het AWS SDK-pakket (boto3):
pip install boto3
pip freeze > requirements.txt
Het volgende voorbeeld laat zien hoe u verbinding maakt met MinIO met behulp van 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')
# Upload een lokaal bestand '/home/john/piano.mp3' naar bucket 'songs' met de objectnaam 'piano.mp3'
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')
# Download het object 'piano.mp3' van bucket 'songs' en sla het lokaal op als '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')
print("'piano.mp3' downloaded as 'classical.mp3'.")
Meer details zijn beschikbaar in de MinIO Python documentatie.
Verbinden met MinIO met de MinIO SDK
Als alternatief kunt u de MinIO SDK voor Python gebruiken. Installeer eerst het MinIO-pakket:
pip install minio
pip freeze > requirements.txt
Hieronder staat een voorbeeld dat laat zien hoe u verbinding maakt met MinIO met behulp van de MinIO SDK:
#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error
def main():
# Maak een client voor uw MinIO-server met uw toegangssleutels en geheime sleutels
client = Minio(
endpoint='<XXXXXX>.stackhero-network.com:443',
secure=True,
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY'
)
# Controleer of de bucket 'asiatrip' bestaat en maak deze indien nodig aan
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# Upload '/home/user/Photos/asiaphotos.zip' als 'asiaphotos-2015.zip' naar de 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)
Voor meer informatie, zie de MinIO Python SDK documentatie.
PHP verbinden met MinIO
Om PHP met MinIO te verbinden, installeer eerst het AWS SDK voor PHP-pakket:
composer require aws/aws-sdk-php
Het onderstaande voorbeeld laat zien hoe u verbinding maakt met MinIO vanuit PHP met behulp van de AWS SDK:
<?php
// Inclusief de SDK met behulp van de 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'
],
]);
// Stuur een PutObject-verzoek en verkrijg het resultaat.
$insert = $s3->putObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'Body' => 'Hello from MinIO!'
]);
// Download de inhoud van het object.
$retrieve = $s3->getObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'SaveAs' => 'testkey_local'
]);
// Print de body van het opgehaalde resultaat.
echo $retrieve['Body'];
Go verbinden met MinIO
Er zijn twee opties om Go-applicaties met MinIO te verbinden.
Verbinden met MinIO met de AWS SDK
Installeer eerst de AWS SDK-pakketten voor Go:
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
Hieronder staat een voorbeeld van hoe u verbinding maakt met MinIO vanuit Go met behulp van de 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")
// Configureer om de MinIO-server te gebruiken
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,
}
// Maak een nieuwe bucket
_, err := s3Client.CreateBucket(cparams)
if err != nil {
fmt.Println(err.Error())
return
}
// Upload een nieuw object met de string "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)
// Haal ons object op en sla het lokaal op
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")
}
Voor aanvullende lectuur, bezoek de MinIO Go documentatie.
Verbinden met MinIO met de MinIO SDK
Om de MinIO SDK voor Go te gebruiken, installeer het volgende pakket:
GO111MODULE=on go get github.com/minio/minio-go/v7
Hieronder staat een voorbeeld dat laat zien hoe u verbinding maakt met MinIO met behulp van de MinIO SDK voor 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
// Initialiseer de MinIO-client
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 is nu ingesteld
}
Voor meer informatie, zie de MinIO Go SDK documentatie.
Node.js verbinden met MinIO
Er zijn twee methoden om Node.js-applicaties met MinIO te verbinden.
Verbinden met MinIO met de AWS SDK
Installeer eerst het AWS SDK-pakket voor Node.js:
npm install aws-sdk
Hieronder staat een voorbeeld dat laat zien hoe u verbinding maakt met MinIO met behulp van de 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, // vereist met MinIO
signatureVersion: 'v4'
});
// putObject operatie
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 operatie
const file = require('fs').createWriteStream('/tmp/mykey');
s3.getObject({ Bucket: 'testbucket', Key: 'testobject' })
.on('httpData', chunk => file.write(chunk))
.on('httpDone', () => file.end())
.send();
Voor meer details, bezoek de MinIO Node.js documentatie.
Verbinden met MinIO met de MinIO SDK
Als u de voorkeur geeft aan het gebruik van de MinIO SDK voor Node.js, installeer deze dan met npm:
npm install minio
Hier is een voorbeeld van hoe u verbinding maakt met MinIO met behulp van de MinIO SDK voor Node.js:
const process = require('process');
const Minio = require('minio');
// Instantieer de MinIO-client met de endpoint en toegangssleutels
const minioClient = new Minio.Client({
endpoint: '<XXXXXX>.stackhero-network.com',
port: 443,
useSSL: true,
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
});
// Bestand om te uploaden
const file = '/tmp/photos-europe.tar';
// Maak een bucket genaamd '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
};
// Upload het bestand naar de bucket 'europetrip' met behulp van de fPutObject API
minioClient.fPutObject(
'europetrip',
'photos-europe.tar',
file,
metaData,
(err, etag) => {
if (err) return console.log(err);
console.log('File uploaded successfully.');
}
);
}
);
Voor meer informatie, zie de MinIO Node.js SDK documentatie.