MinIO: Erste Schritte
Wie man mit MinIO für S3-kompatiblen Objektspeicher beginnt
👋 Willkommen bei der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite MinIO Object Storage Lösung, die zahlreiche Vorteile bietet, darunter:
- Unbegrenzte Übertragungen.
- Einfache, vorausschauende und transparente Preisgestaltung.
- Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://object-storage.ihre-firma.com).
- Mühelose Updates mit nur einem Klick.
- Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
- Verfügbar in 🇪🇺 Europa und 🇺🇸 USA.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die MinIO Object Storage Hosting Lösung von Stackhero auszuprobieren!
MinIO ist ein Objektspeicherdienst, der das Amazon S3-Protokoll implementiert. Jeder Amazon S3-kompatible Client kann sich mit MinIO verbinden und nahtlos mit Ihrem Objektspeicher interagieren. Eine Amazon S3-Clientbibliothek ist für fast jede große Programmiersprache verfügbar, einschließlich Ruby, Node.js, Java, Python, Clojure und Erlang.
Wir empfehlen die Verwendung der MinIO SDKs, um sich mit Ihrem Objektspeicher zu verbinden. Eine vollständige Liste der verfügbaren SDKs finden Sie in der offiziellen MinIO-Dokumentation.
Alternativ können Sie die MinIO CLI verwenden. Sie ist besonders nützlich, um große Dateien direkt von Ihrem Terminal aus zu verwalten. Ausführliche Anleitungen zur Verwendung der MinIO CLI finden Sie in der offiziellen MinIO CLI-Dokumentation.
Verwendung der MinIO CLI
Ihre Stackhero for MinIO-Instanz enthält standardmäßig die MinIO Console Web-UI. Für fortgeschrittenere Aufgaben können Sie die MinIO CLI verwenden.
Der einfachste Weg, die MinIO CLI auszuprobieren, ist das Ausführen ihres Docker-Containers. Folgen Sie diesen Schritten:
-
Starten Sie den Container:
docker run -it --entrypoint=/bin/sh minio/mc -
Fügen Sie innerhalb des Containers Ihren Server mit folgendem Befehl hinzu (ersetzen Sie die Platzhalterwerte entsprechend):
mc alias set minio https://<XXXXXX>.stackhero-network.com <ROOT_ACCESS_KEY> <MINIO_ROOT_SECRET_KEY> -
Erstellen Sie einen Bucket namens "test", um die Einrichtung zu überprüfen:
mc mb minio/test -
Listen Sie Ihre Buckets auf:
mc ls minio
Weitere MinIO CLI-Befehle können Sie durch Ausführen von mc --help anzeigen.
Verbindung von Ruby zu MinIO
Installieren Sie zuerst das AWS SDK-Gem:
gem install aws-sdk
bundle install
Nachfolgend ein einfaches Beispiel, das zeigt, wie man mit dem AWS SDK in Ruby mit MinIO interagiert:
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-Operation
rubys3_client.put_object(
key: 'testobject',
body: 'Hello from MinIO!',
bucket: 'testbucket',
content_type: 'text/plain'
)
# get_object-Operation
rubys3_client.get_object(
bucket: 'testbucket',
key: 'testobject',
response_target: 'download_testobject'
)
print "Downloaded 'testobject' as 'download_testobject'."
Weitere Details finden Sie in der MinIO Ruby-Dokumentation.
Verbindung von Python zu MinIO
Es gibt zwei Hauptmethoden, um Python-Anwendungen mit MinIO zu verbinden.
Verbindung zu MinIO mit dem AWS SDK (boto)
Installieren Sie zuerst das AWS SDK-Paket (boto3):
pip install boto3
pip freeze > requirements.txt
Das folgende Beispiel zeigt, wie man sich mit boto3 mit MinIO verbindet:
#!/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')
# Laden Sie eine lokale Datei '/home/john/piano.mp3' in den Bucket 'songs' mit dem Objektnamen 'piano.mp3' hoch
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')
# Laden Sie das Objekt 'piano.mp3' aus dem Bucket 'songs' herunter und speichern Sie es lokal als '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')
print("'piano.mp3' downloaded as 'classical.mp3'.")
Weitere Details finden Sie in der MinIO Python-Dokumentation.
Verbindung zu MinIO mit dem MinIO SDK
Alternativ können Sie das MinIO SDK für Python verwenden. Installieren Sie zuerst das MinIO-Paket:
pip install minio
pip freeze > requirements.txt
Nachfolgend ein Beispiel, das zeigt, wie man sich mit dem MinIO SDK mit MinIO verbindet:
#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error
def main():
# Erstellen Sie einen Client für Ihren MinIO-Server mit Ihren Zugangs- und Geheimschlüsseln
client = Minio(
endpoint='<XXXXXX>.stackhero-network.com:443',
secure=True,
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY'
)
# Überprüfen Sie, ob der Bucket 'asiatrip' existiert, und erstellen Sie ihn, falls nicht
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# Laden Sie '/home/user/Photos/asiaphotos.zip' als 'asiaphotos-2015.zip' in den Bucket 'asiatrip' hoch
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)
Weitere Informationen finden Sie in der MinIO Python SDK-Dokumentation.
Verbindung von PHP zu MinIO
Um PHP mit MinIO zu verbinden, installieren Sie zuerst das AWS SDK für PHP-Paket:
composer require aws/aws-sdk-php
Das folgende Beispiel zeigt, wie man sich mit MinIO von PHP aus unter Verwendung des AWS SDK verbindet:
<?php
// Integrieren Sie das SDK mit dem 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'
],
]);
// Senden Sie eine PutObject-Anfrage und erhalten Sie das Ergebnis.
$insert = $s3->putObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'Body' => 'Hello from MinIO!'
]);
// Laden Sie den Inhalt des Objekts herunter.
$retrieve = $s3->getObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'SaveAs' => 'testkey_local'
]);
// Drucken Sie den Körper des abgerufenen Ergebnisses.
echo $retrieve['Body'];
Verbindung von Go zu MinIO
Es gibt zwei Optionen, um Go-Anwendungen mit MinIO zu verbinden.
Verbindung zu MinIO mit dem AWS SDK
Installieren Sie zuerst die AWS SDK-Pakete für Go:
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
Nachfolgend ein Beispiel, wie man sich mit MinIO von Go aus unter Verwendung des AWS SDK verbindet:
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")
// Konfigurieren Sie die Nutzung des MinIO-Servers
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,
}
// Erstellen Sie einen neuen Bucket
_, err := s3Client.CreateBucket(cparams)
if err != nil {
fmt.Println(err.Error())
return
}
// Laden Sie ein neues Objekt mit dem String "Hello from MinIO!" hoch
_, 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)
// Rufen Sie unser Objekt ab und speichern Sie es lokal
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")
}
Für weitere Lektüre besuchen Sie die MinIO Go-Dokumentation.
Verbindung zu MinIO mit dem MinIO SDK
Um das MinIO SDK für Go zu verwenden, installieren Sie das folgende Paket:
GO111MODULE=on go get github.com/minio/minio-go/v7
Nachfolgend ein Beispiel, das zeigt, wie man sich mit dem MinIO SDK für Go mit MinIO verbindet:
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
// Initialisieren Sie den 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 ist jetzt eingerichtet
}
Für weitere Informationen siehe die MinIO Go SDK-Dokumentation.
Verbindung von Node.js zu MinIO
Es gibt zwei Methoden, um Node.js-Anwendungen mit MinIO zu verbinden.
Verbindung zu MinIO mit dem AWS SDK
Installieren Sie zuerst das AWS SDK-Paket für Node.js:
npm install aws-sdk
Nachfolgend ein Beispiel, das zeigt, wie man sich mit MinIO unter Verwendung des AWS SDK verbindet:
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, // erforderlich mit MinIO
signatureVersion: 'v4'
});
// putObject-Operation
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-Operation
const file = require('fs').createWriteStream('/tmp/mykey');
s3.getObject({ Bucket: 'testbucket', Key: 'testobject' })
.on('httpData', chunk => file.write(chunk))
.on('httpDone', () => file.end())
.send();
Für weitere Details besuchen Sie die MinIO Node.js-Dokumentation.
Verbindung zu MinIO mit dem MinIO SDK
Wenn Sie das MinIO SDK für Node.js verwenden möchten, installieren Sie es mit npm:
npm install minio
Hier ist ein Beispiel, wie man sich mit dem MinIO SDK für Node.js mit MinIO verbindet:
const process = require('process');
const Minio = require('minio');
// Instanziieren Sie den MinIO-Client mit dem Endpoint und den Zugangsschlüsseln
const minioClient = new Minio.Client({
endpoint: '<XXXXXX>.stackhero-network.com',
port: 443,
useSSL: true,
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
});
// Datei, die hochgeladen werden soll
const file = '/tmp/photos-europe.tar';
// Erstellen Sie einen Bucket namens '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
};
// Laden Sie die Datei in den Bucket 'europetrip' mit der fPutObject-API hoch
minioClient.fPutObject(
'europetrip',
'photos-europe.tar',
file,
metaData,
(err, etag) => {
if (err) return console.log(err);
console.log('File uploaded successfully.');
}
);
}
);
Für weitere Informationen siehe die MinIO Node.js SDK-Dokumentation.