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 参考:存储桶通知操作
API 参考:文件对象操作
API 参考:对象操作
API 参考:预签署操作
API 参考:客户端自定义设置
完整示例
完整示例:存储桶操作
完整示例:存储桶策略操作
完整示例:存储桶生命周期操作
完整示例:存储桶加密操作
完整示例:存储桶复制操作
完整示例:存储桶通知操作
完整示例:文件对象操作
完整示例:对象操作
完整示例:加密对象操作
完整示例:预签署操作
进一步探索
贡献
许可证
此 SDK 在 Apache 许可证 2.0 版 下发布,有关更多信息,请参阅 LICENSE 和 NOTICE。