MinIO: はじめに
S3互換のオブジェクトストレージとしてMinIOを使い始める方法
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供する、すぐに使えるMinIOオブジェクトストレージソリューションを提供しています。
- 無制限の転送。
- シンプルで予測可能、かつ透明な価格設定。
- HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://object-storage.your-company.com)。
- ワンクリックで簡単に更新。
- プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ。
- 🇪🇺 ヨーロッパと🇺🇸 アメリカで利用可能。
時間を節約し、生活を簡素化: StackheroのMinIOオブジェクトストレージホスティングソリューションを試すのに5分しかかかりません!
MinIOはAmazon S3プロトコルを実装したオブジェクトストレージサービスです。Amazon S3互換のクライアントは、MinIOに接続してオブジェクトストレージとシームレスにやり取りできます。Amazon S3クライアントライブラリは、Ruby、Node.js、Java、Python、Clojure、Erlangを含むほぼすべての主要なプログラミング言語で利用可能です。
MinIO SDKを使用してオブジェクトストレージに接続することをお勧めします。利用可能なSDKの完全なリストは、MinIO公式ドキュメントで確認できます。
また、MinIO CLIを使用することもできます。これは、ターミナルから直接大きなファイルを管理するのに特に便利です。MinIO CLIの使用に関する詳細なガイドは、MinIO CLI公式ドキュメントで入手できます。
MinIO CLIの使用
Stackhero for MinIOインスタンスには、デフォルトでMinIO Console Web UIが含まれています。より高度なタスクには、MinIO CLIを使用することを選択できます。
MinIO CLIを試す最も簡単な方法は、そのDockerコンテナを実行することです。以下の手順に従ってください。
-
コンテナを開始します。
docker run -it --entrypoint=/bin/sh minio/mc -
コンテナ内で、次のコマンドを使用してサーバーを追加します(プレースホルダーの値を適宜置き換えてください)。
mc alias set minio https://<XXXXXX>.stackhero-network.com <ROOT_ACCESS_KEY> <MINIO_ROOT_SECRET_KEY> -
設定を確認するために「test」という名前のバケットを作成します。
mc mb minio/test -
バケットを一覧表示します。
mc ls minio
追加のMinIO CLIコマンドは、mc --helpを実行することで確認できます。
RubyをMinIOに接続する
まず、AWS SDK gemをインストールします。
gem install aws-sdk
bundle install
以下は、RubyでAWS SDKを使用してMinIOとやり取りする方法を示す簡単な例です。
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操作
rubys3_client.put_object(
key: 'testobject',
body: 'Hello from MinIO!',
bucket: 'testbucket',
content_type: 'text/plain'
)
# get_object操作
rubys3_client.get_object(
bucket: 'testbucket',
key: 'testobject',
response_target: 'download_testobject'
)
print "Downloaded 'testobject' as 'download_testobject'."
詳細については、MinIO Rubyドキュメントを参照してください。
PythonをMinIOに接続する
PythonアプリケーションをMinIOに接続する主な方法は2つあります。
AWS SDK(boto)を使用してMinIOに接続する
まず、AWS SDKパッケージ(boto3)をインストールします。
pip install boto3
pip freeze > requirements.txt
以下の例は、boto3を使用してMinIOに接続する方法を示しています。
#!/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')
# ローカルファイル '/home/john/piano.mp3' をバケット 'songs' に 'piano.mp3' というオブジェクト名でアップロード
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')
# バケット 'songs' からオブジェクト 'piano.mp3' をダウンロードし、ローカルに '/tmp/classical.mp3' として保存
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')
print("'piano.mp3' downloaded as 'classical.mp3'.")
詳細は、MinIO Pythonドキュメントで確認できます。
MinIO SDKを使用してMinIOに接続する
また、Python用のMinIO SDKを使用することもできます。まず、MinIOパッケージをインストールします。
pip install minio
pip freeze > requirements.txt
以下は、MinIO SDKを使用してMinIOに接続する方法を示す例です。
#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error
def main():
# アクセスキーとシークレットキーを使用してMinIOサーバーのクライアントを作成
client = Minio(
endpoint='<XXXXXX>.stackhero-network.com:443',
secure=True,
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY'
)
# バケット 'asiatrip' が存在するか確認し、存在しない場合は作成
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# '/home/user/Photos/asiaphotos.zip' を 'asiaphotos-2015.zip' としてバケット '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)
詳細については、MinIO Python SDKドキュメントを参照してください。
PHPをMinIOに接続する
PHPをMinIOに接続するには、まずAWS SDK for PHPパッケージをインストールします。
composer require aws/aws-sdk-php
以下の例は、AWS SDKを使用してPHPからMinIOに接続する方法を示しています。
<?php
// Composerのオートローダーを使用してSDKを含める
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'
],
]);
// PutObjectリクエストを送信し、結果を取得
$insert = $s3->putObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'Body' => 'Hello from MinIO!'
]);
// オブジェクトの内容をダウンロード
$retrieve = $s3->getObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'SaveAs' => 'testkey_local'
]);
// 取得した結果の本文を出力
echo $retrieve['Body'];
GoをMinIOに接続する
GoアプリケーションをMinIOに接続するには2つのオプションがあります。
AWS SDKを使用してMinIOに接続する
まず、Go用のAWS SDKパッケージをインストールします。
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
以下は、AWS SDKを使用してGoからMinIOに接続する方法を示す例です。
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")
// 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,
}
// 新しいバケットを作成
_, err := s3Client.CreateBucket(cparams)
if err != nil {
fmt.Println(err.Error())
return
}
// "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)
// オブジェクトを取得してローカルに保存
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")
}
追加の情報は、MinIO Goドキュメントで確認できます。
MinIO SDKを使用してMinIOに接続する
Go用のMinIO SDKを使用するには、次のパッケージをインストールします。
GO111MODULE=on go get github.com/minio/minio-go/v7
以下は、Go用のMinIO SDKを使用してMinIOに接続する方法を示す例です。
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
// 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が設定されました
}
詳細については、MinIO Go SDKドキュメントを参照してください。
Node.jsをMinIOに接続する
Node.jsアプリケーションをMinIOに接続する方法は2つあります。
AWS SDKを使用してMinIOに接続する
まず、Node.js用のAWS SDKパッケージをインストールします。
npm install aws-sdk
以下は、AWS SDKを使用してMinIOに接続する方法を示す例です。
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, // MinIOで必要
signatureVersion: 'v4'
});
// 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');
}
);
// 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();
詳細については、MinIO Node.jsドキュメントを参照してください。
MinIO SDKを使用してMinIOに接続する
Node.js用のMinIO SDKを使用する場合は、npmを使用してインストールします。
npm install minio
以下は、Node.js用のMinIO SDKを使用してMinIOに接続する方法を示す例です。
const process = require('process');
const Minio = require('minio');
// エンドポイントとアクセスキーを使用してMinIOクライアントをインスタンス化
const minioClient = new Minio.Client({
endpoint: '<XXXXXX>.stackhero-network.com',
port: 443,
useSSL: true,
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
});
// アップロードするファイル
const file = '/tmp/photos-europe.tar';
// '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
};
// fPutObject APIを使用してファイルをバケット 'europetrip' にアップロード
minioClient.fPutObject(
'europetrip',
'photos-europe.tar',
file,
metaData,
(err, etag) => {
if (err) return console.log(err);
console.log('File uploaded successfully.');
}
);
}
);
詳細については、MinIO Node.js SDKドキュメントを参照してください。