MinIO: 連接 Go 到 MinIO
此文件屬於入門指南指南的一部分。請在此處查看完整指南:如何開始使用 MinIO 作為 S3 兼容的物件存儲。
👋 歡迎來到 Stackhero 文件!
Stackhero 提供一個即用型的 MinIO Object Storage 解決方案,帶來多項好處,包括:
- 無限傳輸。
- 簡單、可預測和透明的定價。
- 使用 HTTPS 保護的可自訂域名(例如,https://object-storage.your-company.com)。
- 只需點擊即可輕鬆更新。
- 由專用私有 VM提供的最佳性能和強大安全性。
- 可用於 🇪🇺 歐洲 和 🇺🇸 美國。
節省時間並簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 MinIO Object Storage hosting 解決方案!
有兩個選擇可以將 Go 應用程序連接到 MinIO。
使用 AWS SDK 連接到 MinIO
首先,安裝 AWS SDK for Go 包:
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,
}
// 創建一個新的 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
要使用 MinIO SDK for Go,請安裝以下包:
GO111MODULE=on go get github.com/minio/minio-go/v7
以下是一個示例,展示如何使用 MinIO SDK for Go 連接到 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 文檔。