Skip to content

rzeijde/minio-go

This branch is 202 commits behind minio/minio-go:master.

Folders and files

NameName
Last commit message
Last commit date
Oct 19, 2022
Nov 12, 2022
Dec 7, 2022
Jan 13, 2023
May 28, 2019
Sep 28, 2022
Sep 28, 2022
Aug 2, 2020
Dec 7, 2021
May 2, 2015
Apr 7, 2019
Dec 7, 2022
Jul 6, 2020
Sep 20, 2022
Sep 20, 2022
Sep 21, 2021
Dec 7, 2022
Apr 13, 2022
Dec 7, 2022
Dec 7, 2022
Dec 7, 2022
May 7, 2022
Dec 7, 2022
Apr 13, 2022
Dec 7, 2022
Oct 26, 2022
Dec 7, 2022
Dec 7, 2022
Dec 10, 2021
Apr 13, 2022
Aug 2, 2022
Dec 7, 2022
Oct 21, 2022
Dec 7, 2022
Sep 21, 2021
Sep 21, 2021
Sep 21, 2021
Sep 21, 2021
Nov 2, 2021
Nov 17, 2021
Sep 28, 2022
Sep 21, 2021
Dec 7, 2022
Jan 13, 2023
Jan 6, 2023
Apr 7, 2019
Dec 7, 2022
Oct 20, 2022
Feb 9, 2022
Nov 29, 2022
Dec 7, 2022
Oct 21, 2022
Jan 13, 2023
Feb 23, 2022
May 12, 2022
Dec 7, 2022
Jul 6, 2020
Oct 21, 2022
Oct 17, 2022
Jan 13, 2023
Dec 14, 2022
Apr 13, 2022
Jul 25, 2022
Jul 25, 2022
Sep 21, 2021
Jul 6, 2022
Dec 13, 2022
Nov 17, 2021
Sep 6, 2022
Nov 17, 2022
Apr 7, 2019
Dec 7, 2022
Dec 7, 2022
Dec 7, 2022
Dec 7, 2022

Repository files navigation

MinIO Go Client SDK for Amazon S3 Compatible Cloud Storage Slack Sourcegraph Apache V2 License

The MinIO Go Client SDK provides simple APIs to access any Amazon S3 compatible object storage.

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 github.com/minio/minio-go/v7

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.
minio.Options All the options such as credentials, custom transport etc.
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
}

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.min.io 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 (
	"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 mymusic.
	bucketName := "mymusic"
	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 zip file
	objectName := "golden-oldies.zip"
	filePath := "/tmp/golden-oldies.zip"
	contentType := "application/zip"

	// Upload the zip 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)
}

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

API Reference : File Object Operations

API Reference : Object Operations

API Reference : Presigned Operations

API Reference : Client custom settings

Full Examples

Full Examples : Bucket Operations

Full Examples : Bucket policy Operations

Full Examples : Bucket lifecycle Operations

Full Examples : Bucket encryption Operations

Full Examples : Bucket replication Operations

Full Examples : Bucket notification Operations

Full Examples : File Object Operations

Full Examples : Object Operations

Full Examples : Encrypted Object Operations

Full Examples : Presigned Operations

Explore Further

Contribute

Contributors Guide

License

This SDK is distributed under the Apache License, Version 2.0, see LICENSE and NOTICE for more information.

About

MinIO Go client SDK for S3 compatible object storage

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.9%
  • Makefile 0.1%