• 适用于与Amazon S3兼容云存储的Minio Go SDK
    • 从Github下载
    • 初始化Minio Client
    • 示例-文件上传
      • FileUploader.go
      • 运行FileUploader
    • API文档
      • API文档 : 操作存储桶
      • API文档 : 存储桶策略
      • API文档 : 存储桶通知
      • API文档 : 操作文件对象
      • API文档 : 操作对象
      • API文档: 操作加密对象
      • API文档 : Presigned操作
      • API文档 : 客户端自定义设置
    • 完整示例
      • 完整示例 : 操作存储桶
      • 完整示例 : 存储桶策略
      • 完整示例 : 存储桶通知
      • 完整示例 : 操作文件对象
      • 完整示例 : 操作对象
      • 完整示例 : 操作加密对象
      • 完整示例 : Presigned操作
    • 了解更多
    • 贡献

    适用于与Amazon S3兼容云存储的Minio Go SDK

    Minio Go Client SDK提供了简单的API来访问任何与Amazon S3兼容的对象存储服务。

    支持的云存储:

    • AWS Signature Version 4

      • Amazon S3
      • Minio
    • AWS Signature Version 2

      • Google Cloud Storage (兼容模式)
      • Openstack Swift + Swift3 middleware
      • Ceph Object Gateway
      • Riak CS
        本文我们将学习如何安装Minio client SDK,连接到Minio,并提供一下文件上传的示例。对于完整的API以及示例,请参考Go Client API Reference。

    本文假设你已经有 Go开发环境。

    从Github下载

    1. go get -u github.com/minio/minio-go

    初始化Minio Client

    Minio client需要以下4个参数来连接与Amazon S3兼容的对象存储。

    参数 描述
    endpoint 对象存储服务的URL
    accessKeyID Access key是唯一标识你的账户的用户ID。
    secretAccessKey Secret key是你账户的密码。
    secure true代表使用HTTPS
    1. package main
    2. import (
    3. "github.com/minio/minio-go"
    4. "log"
    5. )
    6. func main() {
    7. endpoint := "play.minio.io:9000"
    8. accessKeyID := "Q3AM3UQ867SPQQA43P2F"
    9. secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
    10. useSSL := true
    11. // 初使化 minio client对象。
    12. minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
    13. if err != nil {
    14. log.Fatalln(err)
    15. }
    16. log.Printf("%#v\n", minioClient) // minioClient初使化成功
    17. }

    示例-文件上传

    本示例连接到一个对象存储服务,创建一个存储桶并上传一个文件到存储桶中。

    我们在本示例中使用运行在 https://play.minio.io:9000 上的Minio服务,你可以用这个服务来开发和测试。示例中的访问凭据是公开的。

    FileUploader.go

    1. package main
    2. import (
    3. "github.com/minio/minio-go"
    4. "log"
    5. )
    6. func main() {
    7. endpoint := "play.minio.io:9000"
    8. accessKeyID := "Q3AM3UQ867SPQQA43P2F"
    9. secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
    10. useSSL := true
    11. // 初使化minio client对象。
    12. minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
    13. if err != nil {
    14. log.Fatalln(err)
    15. }
    16. // 创建一个叫mymusic的存储桶。
    17. bucketName := "mymusic"
    18. location := "us-east-1"
    19. err = minioClient.MakeBucket(bucketName, location)
    20. if err != nil {
    21. // 检查存储桶是否已经存在。
    22. exists, err := minioClient.BucketExists(bucketName)
    23. if err == nil && exists {
    24. log.Printf("We already own %s\n", bucketName)
    25. } else {
    26. log.Fatalln(err)
    27. }
    28. }
    29. log.Printf("Successfully created %s\n", bucketName)
    30. // 上传一个zip文件。
    31. objectName := "golden-oldies.zip"
    32. filePath := "/tmp/golden-oldies.zip"
    33. contentType := "application/zip"
    34. // 使用FPutObject上传一个zip文件。
    35. n, err := minioClient.FPutObject(bucketName, objectName, filePath, minio.PutObjectOptions{ContentType:contentType})
    36. if err != nil {
    37. log.Fatalln(err)
    38. }
    39. log.Printf("Successfully uploaded %s of size %d\n", objectName, n)
    40. }

    运行FileUploader

    1. go run file-uploader.go
    2. 2016/08/13 17:03:28 Successfully created mymusic
    3. 2016/08/13 17:03:40 Successfully uploaded golden-oldies.zip of size 16253413
    4. mc ls play/mymusic/
    5. [2016-05-27 16:02:16 PDT] 17MiB golden-oldies.zip

    API文档

    完整的API文档在这里。

    • 完整API文档

      API文档 : 操作存储桶

    • MakeBucket

    • ListBuckets
    • BucketExists
    • RemoveBucket
    • ListObjects
    • ListObjectsV2
    • ListIncompleteUploads

      API文档 : 存储桶策略

    • SetBucketPolicy

    • GetBucketPolicy

      API文档 : 存储桶通知

    • SetBucketNotification

    • GetBucketNotification
    • RemoveAllBucketNotification
    • ListenBucketNotification (Minio Extension)

      API文档 : 操作文件对象

    • FPutObject

    • FGetObject
    • FPutObjectWithContext
    • FGetObjectWithContext

      API文档 : 操作对象

    • GetObject

    • PutObject
    • GetObjectWithContext
    • PutObjectWithContext
    • PutObjectStreaming
    • StatObject
    • CopyObject
    • RemoveObject
    • RemoveObjects
    • RemoveIncompleteUpload

      API文档: 操作加密对象

    • GetEncryptedObject

    • PutEncryptedObject

      API文档 : Presigned操作

    • PresignedGetObject

    • PresignedPutObject
    • PresignedHeadObject
    • PresignedPostPolicy

      API文档 : 客户端自定义设置

    • SetAppInfo

    • SetCustomTransport
    • TraceOn
    • TraceOff

      完整示例

    完整示例 : 操作存储桶

    • makebucket.go
    • listbuckets.go
    • bucketexists.go
    • removebucket.go
    • listobjects.go
    • listobjectsV2.go
    • listincompleteuploads.go

      完整示例 : 存储桶策略

    • setbucketpolicy.go

    • getbucketpolicy.go
    • listbucketpolicies.go

      完整示例 : 存储桶通知

    • setbucketnotification.go

    • getbucketnotification.go
    • removeallbucketnotification.go
    • listenbucketnotification.go (Minio扩展)

      完整示例 : 操作文件对象

    • fputobject.go

    • fgetobject.go
    • fputobject-context.go
    • fgetobject-context.go

      完整示例 : 操作对象

    • putobject.go

    • getobject.go
    • putobject-context.go
    • getobject-context.go
    • statobject.go
    • copyobject.go
    • removeobject.go
    • removeincompleteupload.go
    • removeobjects.go

      完整示例 : 操作加密对象

    • put-encrypted-object.go

    • get-encrypted-object.go
    • fput-encrypted-object.go

      完整示例 : Presigned操作

    • presignedgetobject.go

    • presignedputobject.go
    • presignedheadobject.go
    • presignedpostpolicy.go

      了解更多

    • 完整文档

    • Minio Go Client SDK API文档
    • Go 音乐播放器完整示例

      贡献

    贡献指南

    Build StatusBuild status

    原文: https://docs.minio.io/cn/golang-client-quickstart-guide.html