MinIO: GoをMinIOに接続する

このドキュメントははじめにガイドの一部です。完全なガイドはこちらからご覧いただけます:S3互換のオブジェクトストレージとしてMinIOを使い始める方法

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供する、すぐに使えるMinIOオブジェクトストレージソリューションを提供しています。

  • 無制限の転送。
  • シンプルで予測可能、かつ透明な価格設定
  • HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://object-storage.your-company.com)。
  • ワンクリックで簡単に更新
  • プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ
  • 🇪🇺 ヨーロッパ🇺🇸 アメリカで利用可能。

時間を節約し、生活を簡素化: StackheroのMinIOオブジェクトストレージホスティングソリューションを試すのに5分しかかかりません!

GoアプリケーションをMinIOに接続するには2つのオプションがあります。

まず、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ドキュメントで確認できます。

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ドキュメントを参照してください。