| .. | ||
| docs | ||
| examples | ||
| pkg | ||
| .gitignore | ||
| .travis.yml | ||
| api-compose-object.go | ||
| api-compose-object_test.go | ||
| api-datatypes.go | ||
| api-error-response.go | ||
| api-error-response_test.go | ||
| api-get-object-file.go | ||
| api-get-object.go | ||
| api-get-policy.go | ||
| api-list.go | ||
| api-notification.go | ||
| api-presigned.go | ||
| api-put-bucket.go | ||
| api-put-object-common.go | ||
| api-put-object-copy.go | ||
| api-put-object-encrypted.go | ||
| api-put-object-file.go | ||
| api-put-object-multipart.go | ||
| api-put-object-streaming.go | ||
| api-put-object.go | ||
| api-remove.go | ||
| api-s3-datatypes.go | ||
| api-stat.go | ||
| api.go | ||
| api_functional_v2_test.go | ||
| api_functional_v4_test.go | ||
| api_unit_test.go | ||
| appveyor.yml | ||
| bucket-cache.go | ||
| bucket-cache_test.go | ||
| bucket-notification.go | ||
| constants.go | ||
| CONTRIBUTING.md | ||
| core.go | ||
| core_test.go | ||
| hook-reader.go | ||
| LICENSE | ||
| MAINTAINERS.md | ||
| post-policy.go | ||
| README.md | ||
| request-headers.go | ||
| request-headers_test.go | ||
| retry-continous.go | ||
| retry.go | ||
| s3-endpoints.go | ||
| s3-error.go | ||
| test-utils_test.go | ||
| utils.go | ||
| utils_test.go | ||
Minio Go Client SDK for Amazon S3 Compatible Cloud Storage

The Minio Go Client SDK provides simple APIs to access any Amazon S3 compatible object storage.
Supported cloud storage providers:
-
AWS Signature Version 4
- Amazon S3
- Minio
-
AWS Signature Version 2
- Google Cloud Storage (Compatibility Mode)
- Openstack Swift + Swift3 middleware
- Ceph Object Gateway
- Riak CS
This quickstart guide will show you how to install the Minio client SDK, connect to Minio, and provide a walkthrough for a simple file uploader. For a complete list of APIs and examples, please take a look at the Go Client API Reference.
This document assumes that you have a working Go development environment.
Download from Github
go get -u github.com/minio/minio-go
Initialize Minio Client
Minio client requires the following four parameters specified to connect to an Amazon S3 compatible object storage.
| Parameter | Description |
|---|---|
| endpoint | URL to object storage service. |
| accessKeyID | Access key is the user ID that uniquely identifies your account. |
| secretAccessKey | Secret key is the password to your account. |
| secure | Set this value to 'true' to enable secure (HTTPS) access. |
package main
import (
"github.com/minio/minio-go"
"log"
)
func main() {
endpoint := "play.minio.io:9000"
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
useSSL := true
// Initialize minio client object.
minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
if err != nil {
log.Fatalln(err)
}
log.Println("%v", minioClient) // minioClient is now setup
Quick Start Example - File Uploader
This example program connects to an object storage server, creates a bucket and uploads a file to the bucket.
We will use the Minio server running at https://play.minio.io:9000 in this example. Feel free to use this service for testing and development. Access credentials shown in this example are open to the public.
FileUploader.go
package main
import (
"github.com/minio/minio-go"
"log"
)
func main() {
endpoint := "play.minio.io:9000"
accessKeyID := "Q3AM3UQ867SPQQA43P2F"
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
useSSL := true
// Initialize minio client object.
minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
if err != nil {
log.Fatalln(err)
}
// Make a new bucket called mymusic.
bucketName := "mymusic"
location := "us-east-1"
err = minioClient.MakeBucket(bucketName, location)
if err != nil {
// Check to see if we already own this bucket (which happens if you run this twice)
exists, err := minioClient.BucketExists(bucketName)
if err == nil && exists {
log.Printf("We already own %s\n", bucketName)
} else {
log.Fatalln(err)
}
}
log.Printf("Successfully created %s\n", bucketName)
// Upload the zip file
objectName := "golden-oldies.zip"
filePath := "/tmp/golden-oldies.zip"
contentType := "application/zip"
// Upload the zip file with FPutObject
n, err := minioClient.FPutObject(bucketName, objectName, filePath, contentType)
if err != nil {
log.Fatalln(err)
}
log.Printf("Successfully uploaded %s of size %d\n", objectName, n)
}
Run FileUploader
go run file-uploader.go
2016/08/13 17:03:28 Successfully created mymusic
2016/08/13 17:03:40 Successfully uploaded golden-oldies.zip of size 16253413
mc ls play/mymusic/
[2016-05-27 16:02:16 PDT] 17MiB golden-oldies.zip
API Reference
The full API Reference is available here.
API Reference : Bucket Operations
API Reference : Bucket policy Operations
API Reference : Bucket notification Operations
SetBucketNotificationGetBucketNotificationRemoveAllBucketNotificationListenBucketNotification(Minio Extension)
API Reference : File Object Operations
API Reference : Object Operations
GetObjectPutObjectPutObjectStreamingStatObjectCopyObjectRemoveObjectRemoveObjectsRemoveIncompleteUpload
API Reference: Encrypted Object Operations
API Reference : Presigned Operations
API Reference : Client custom settings
Full Examples
Full Examples : Bucket Operations
- makebucket.go
- listbuckets.go
- bucketexists.go
- removebucket.go
- listobjects.go
- listobjectsV2.go
- listincompleteuploads.go
Full Examples : Bucket policy Operations
Full Examples : Bucket notification Operations
- setbucketnotification.go
- getbucketnotification.go
- removeallbucketnotification.go
- listenbucketnotification.go (Minio Extension)
Full Examples : File Object Operations
Full Examples : Object Operations
- putobject.go
- getobject.go
- statobject.go
- copyobject.go
- removeobject.go
- removeincompleteupload.go
- removeobjects.go
Full Examples : Encrypted Object Operations
Full Examples : Presigned Operations
Explore Further
- Complete Documentation
- Minio Go Client SDK API Reference
- Go Music Player App Full Application Example