文件

Go 快速入門指南

適用於 Amazon S3 相容雲端儲存的 MinIO Go 客戶端 SDK Slack Sourcegraph Apache V2 授權

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 相容的物件儲存

參數

描述

endpoint

物件儲存服務的 URL。

_minio.Options_

所有選項,例如認證、自訂傳輸等。

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 參考:儲存桶通知操作

API 參考:檔案物件操作

API 參考:物件操作

API 參考:預先簽署操作

API 參考:用戶端自訂設定

完整範例

完整範例:儲存桶操作

完整範例:儲存桶政策操作

完整範例:儲存桶生命週期操作

完整範例:儲存桶加密操作

完整範例:儲存桶複寫操作

完整範例:儲存桶通知操作

完整範例:檔案物件操作

完整範例:物件操作

完整範例:加密物件操作

完整範例:預先簽署操作

進一步探索

貢獻

貢獻者指南

授權條款

此 SDK 依據 Apache 授權條款,版本 2.0 發布,詳情請參閱 LICENSENOTICE