适用于与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
accessKeyIDAccess key是唯一标识你的账户的用户ID。
secretAccessKeySecret key是你账户的密码。
securetrue代表使用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/1317:03:28Successfully created mymusic
  3. 2016/08/1317:03:40Successfully uploaded golden-oldies.zip of size 16253413
  4. mc ls play/mymusic/
  5. [2016-05-2716:02:16 PDT]17MiB golden-oldies.zip

API文档

完整的API文档在这里。

完整示例 : 操作存储桶

贡献指南

Build StatusBuild status

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