MinIO: Pierwsze kroki
Jak rozpocząć korzystanie z MinIO do przechowywania obiektów zgodnych z S3
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie MinIO Object Storage, które zapewnia wiele korzyści, w tym:
- Nieograniczone transfery.
- Proste, przewidywalne i przejrzyste ceny.
- Dostosowywalna nazwa domeny zabezpieczona HTTPS (na przykład, https://object-storage.twoja-firma.com).
- Bezproblemowe aktualizacje za jednym kliknięciem.
- Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
- Dostępne w 🇪🇺 Europie i 🇺🇸 USA.
Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie hostingowe MinIO Object Storage Stackhero!
MinIO to usługa przechowywania obiektów, która implementuje protokół Amazon S3. Każdy klient zgodny z Amazon S3 może połączyć się z MinIO i bezproblemowo współpracować z Twoim magazynem obiektów. Biblioteka klienta Amazon S3 jest dostępna dla niemal każdego głównego języka programowania, w tym Ruby, Node.js, Java, Python, Clojure i Erlang.
Zalecamy korzystanie z SDK MinIO do łączenia się z magazynem obiektów. Pełną listę dostępnych SDK można znaleźć w oficjalnej dokumentacji MinIO.
Alternatywnie, można użyć MinIO CLI. Jest szczególnie przydatne do zarządzania dużymi plikami bezpośrednio z terminala. Szczegółowe instrukcje dotyczące korzystania z MinIO CLI są dostępne w oficjalnej dokumentacji MinIO CLI.
Korzystanie z MinIO CLI
Twoja instancja Stackhero for MinIO domyślnie zawiera webowy interfejs MinIO Console. Do bardziej zaawansowanych zadań można wybrać użycie MinIO CLI.
Najprostszym sposobem na wypróbowanie MinIO CLI jest uruchomienie jego kontenera Docker. Wykonaj następujące kroki:
-
Uruchom kontener:
docker run -it --entrypoint=/bin/sh minio/mc -
Wewnątrz kontenera dodaj swój serwer za pomocą następującego polecenia (odpowiednio zastąp wartości zastępcze):
mc alias set minio https://<XXXXXX>.stackhero-network.com <ROOT_ACCESS_KEY> <MINIO_ROOT_SECRET_KEY> -
Utwórz bucket o nazwie "test", aby zweryfikować konfigurację:
mc mb minio/test -
Wyświetl listę swoich bucketów:
mc ls minio
Dodatkowe polecenia MinIO CLI można zobaczyć, uruchamiając mc --help.
Łączenie Ruby z MinIO
Najpierw zainstaluj gem AWS SDK:
gem install aws-sdk
bundle install
Poniżej znajduje się prosty przykład pokazujący, jak współpracować z MinIO za pomocą AWS SDK w 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
# operacja put_object
rubys3_client.put_object(
key: 'testobject',
body: 'Hello from MinIO!',
bucket: 'testbucket',
content_type: 'text/plain'
)
# operacja get_object
rubys3_client.get_object(
bucket: 'testbucket',
key: 'testobject',
response_target: 'download_testobject'
)
print "Downloaded 'testobject' as 'download_testobject'."
Więcej szczegółów można znaleźć w dokumentacji Ruby MinIO.
Łączenie Python z MinIO
Istnieją dwa główne sposoby łączenia aplikacji Python z MinIO.
Łączenie z MinIO za pomocą AWS SDK (boto)
Najpierw zainstaluj pakiet AWS SDK (boto3):
pip install boto3
pip freeze > requirements.txt
Poniższy przykład pokazuje, jak połączyć się z MinIO za pomocą 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')
# Prześlij lokalny plik '/home/john/piano.mp3' do bucketu 'songs' z nazwą obiektu 'piano.mp3'
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')
# Pobierz obiekt 'piano.mp3' z bucketu 'songs' i zapisz go lokalnie jako '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')
print("'piano.mp3' downloaded as 'classical.mp3'.")
Więcej szczegółów można znaleźć w dokumentacji Python MinIO.
Łączenie z MinIO za pomocą SDK MinIO
Alternatywnie, można użyć SDK MinIO dla Python. Najpierw zainstaluj pakiet MinIO:
pip install minio
pip freeze > requirements.txt
Poniżej znajduje się przykład pokazujący, jak połączyć się z MinIO za pomocą SDK MinIO:
#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error
def main():
# Utwórz klienta dla swojego serwera MinIO, używając kluczy dostępu i sekretu
client = Minio(
endpoint='<XXXXXX>.stackhero-network.com:443',
secure=True,
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY'
)
# Sprawdź, czy bucket 'asiatrip' istnieje, i utwórz go, jeśli nie istnieje
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# Prześlij '/home/user/Photos/asiaphotos.zip' jako 'asiaphotos-2015.zip' do bucketu '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)
Więcej informacji można znaleźć w dokumentacji SDK Python MinIO.
Łączenie PHP z MinIO
Aby połączyć PHP z MinIO, najpierw zainstaluj pakiet AWS SDK dla PHP:
composer require aws/aws-sdk-php
Poniższy przykład pokazuje, jak połączyć się z MinIO z PHP za pomocą AWS SDK:
<?php
// Dołącz SDK, używając autoloadera 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'
],
]);
// Wyślij żądanie PutObject i uzyskaj wynik.
$insert = $s3->putObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'Body' => 'Hello from MinIO!'
]);
// Pobierz zawartość obiektu.
$retrieve = $s3->getObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'SaveAs' => 'testkey_local'
]);
// Wyświetl ciało pobranego wyniku.
echo $retrieve['Body'];
Łączenie Go z MinIO
Istnieją dwie opcje łączenia aplikacji Go z MinIO.
Łączenie z MinIO za pomocą AWS SDK
Najpierw zainstaluj pakiety AWS SDK dla Go:
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
Poniżej znajduje się przykład, jak połączyć się z MinIO z Go za pomocą 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")
// Skonfiguruj do użycia serwera 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,
}
// Utwórz nowy bucket
_, err := s3Client.CreateBucket(cparams)
if err != nil {
fmt.Println(err.Error())
return
}
// Prześlij nowy obiekt z ciągiem "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)
// Pobierz nasz obiekt i zapisz go lokalnie
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")
}
Więcej informacji można znaleźć w dokumentacji Go MinIO.
Łączenie z MinIO za pomocą SDK MinIO
Aby użyć SDK MinIO dla Go, zainstaluj następujący pakiet:
GO111MODULE=on go get github.com/minio/minio-go/v7
Poniżej znajduje się przykład pokazujący, jak połączyć się z MinIO za pomocą SDK MinIO dla 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
// Zainicjuj klienta 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 jest teraz skonfigurowany
}
Więcej informacji można znaleźć w dokumentacji SDK Go MinIO.
Łączenie Node.js z MinIO
Istnieją dwie metody łączenia aplikacji Node.js z MinIO.
Łączenie z MinIO za pomocą AWS SDK
Najpierw zainstaluj pakiet AWS SDK dla Node.js:
npm install aws-sdk
Poniżej znajduje się przykład pokazujący, jak połączyć się z MinIO za pomocą 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, // wymagane z MinIO
signatureVersion: 'v4'
});
// operacja 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');
}
);
// operacja 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();
Więcej szczegółów można znaleźć w dokumentacji Node.js MinIO.
Łączenie z MinIO za pomocą SDK MinIO
Jeśli wolisz używać SDK MinIO dla Node.js, zainstaluj go za pomocą npm:
npm install minio
Poniżej znajduje się przykład pokazujący, jak połączyć się z MinIO za pomocą SDK MinIO dla Node.js:
const process = require('process');
const Minio = require('minio');
// Zainicjuj klienta MinIO z endpointem i kluczami dostępu
const minioClient = new Minio.Client({
endpoint: '<XXXXXX>.stackhero-network.com',
port: 443,
useSSL: true,
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
});
// Plik do przesłania
const file = '/tmp/photos-europe.tar';
// Utwórz bucket o nazwie '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
};
// Prześlij plik do bucketu 'europetrip' używając API fPutObject
minioClient.fPutObject(
'europetrip',
'photos-europe.tar',
file,
metaData,
(err, etag) => {
if (err) return console.log(err);
console.log('File uploaded successfully.');
}
);
}
);
Więcej informacji można znaleźć w dokumentacji SDK Node.js MinIO.