Go 快速入門指南
適用於 Amazon S3 相容雲端儲存的 MinIO Go 客戶端 SDK

MinIO Go 客戶端 SDK 提供直接的 API 來存取任何 Amazon S3 相容的物件儲存。
本快速入門指南涵蓋如何安裝 MinIO 客戶端 SDK、連線至 MinIO 以及建立範例檔案上傳器。如需完整的 API 和範例清單,請參閱 godoc 文件 或 Go 客戶端 API 參考。
這些範例假設有一個可運作的 Go 開發環境 以及 MinIO mc
命令列工具。
從 Github 下載
從您的專案目錄
go get github.com/minio/minio-go/v7
初始化 MinIO 客戶端物件
MinIO 客戶端需要下列參數才能連線至 Amazon S3 相容的物件儲存
參數 |
描述 |
---|---|
|
物件儲存服務的 URL。 |
|
所有選項,例如認證、自訂傳輸等。 |
package main
import (
"log"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func main() {
endpoint := "play.min.io"
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
useSSL := true
// Initialize minio client object.
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 is now set up
}
範例 - 檔案上傳器
此範例程式碼會連線至物件儲存伺服器、建立儲存桶,並將檔案上傳至儲存桶。它使用 MinIO play
伺服器,這是一個位於 https://play.min.io 的公有 MinIO 叢集。
play
伺服器執行最新穩定版本的 MinIO,可用於測試和開發。本範例中顯示的存取認證對公眾開放,所有上傳至 play
的資料都應視為公開且未受保護。
FileUploader.go
此範例執行下列操作
使用提供的認證連線至 MinIO
play
伺服器。建立名為
testbucket
的儲存桶。從
/tmp
上傳名為testdata
的檔案。使用
mc ls
驗證是否已建立檔案。
// FileUploader.go MinIO example
package main
import (
"context"
"log"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func main() {
ctx := context.Background()
endpoint := "play.min.io"
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
useSSL := true
// Initialize minio client object.
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if err != nil {
log.Fatalln(err)
}
// Make a new bucket called testbucket.
bucketName := "testbucket"
location := "us-east-1"
err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: location})
if err != nil {
// Check to see if we already own this bucket (which happens if you run this twice)
exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)
if errBucketExists == nil && exists {
log.Printf("We already own %s\n", bucketName)
} else {
log.Fatalln(err)
}
} else {
log.Printf("Successfully created %s\n", bucketName)
}
// Upload the test file
// Change the value of filePath if the file is in another location
objectName := "testdata"
filePath := "/tmp/testdata"
contentType := "application/octet-stream"
// Upload the test file with FPutObject
info, err := minioClient.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contentType})
if err != nil {
log.Fatalln(err)
}
log.Printf("Successfully uploaded %s of size %d\n", objectName, info.Size)
}
1. 建立包含資料的測試檔案
您可以使用 Linux 或 macOS 系統上的 dd
來執行此操作
dd if=/dev/urandom of=/tmp/testdata bs=2048 count=10
或 Windows 上的 fsutil
fsutil file createnew "C:\Users\<username>\Desktop\sample.txt" 20480
2. 使用下列命令執行 FileUploader
go mod init example/FileUploader
go get github.com/minio/minio-go/v7
go get github.com/minio/minio-go/v7/pkg/credentials
go run FileUploader.go
輸出類似如下
2023/11/01 14:27:55 Successfully created testbucket
2023/11/01 14:27:55 Successfully uploaded testdata of size 20480
3. 使用 mc ls
驗證上傳的檔案
mc ls play/testbucket
[2023-11-01 14:27:55 UTC] 20KiB STANDARD TestDataFile
API 參考
完整的 API 參考可在此處取得。
API 參考:儲存桶作業
API 參考:儲存桶政策操作
API 參考:儲存桶通知操作
ListenBucketNotification
(MinIO 擴充功能)ListenNotification
(MinIO 擴充功能)
API 參考:檔案物件操作
API 參考:物件操作
API 參考:預先簽署操作
API 參考:用戶端自訂設定
完整範例
完整範例:儲存桶操作
完整範例:儲存桶政策操作
完整範例:儲存桶生命週期操作
完整範例:儲存桶加密操作
完整範例:儲存桶複寫操作
完整範例:儲存桶通知操作
完整範例:檔案物件操作
完整範例:物件操作
完整範例:加密物件操作
完整範例:預先簽署操作
進一步探索
貢獻
授權條款
此 SDK 依據 Apache 授權條款,版本 2.0 發布,詳情請參閱 LICENSE 和 NOTICE。