文档

MinIO Go 客户端 API 参考 Slack

初始化 MinIO 客户端对象。

MinIO

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 setup
}

AWS S3

package main

import (
    "fmt"

    "github.com/minio/minio-go/v7"
    "github.com/minio/minio-go/v7/pkg/credentials"
)

func main() {
        // Initialize minio client object.
        s3Client, err := minio.New("s3.amazonaws.com", &minio.Options{
   	        Creds:  credentials.NewStaticV4("YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ""),
	        Secure: true,
        })
        if err != nil {
                fmt.Println(err)
                return
        }
}

存储桶操作

对象操作

预签名操作

存储桶策略/通知操作

客户端自定义设置

MakeBucket

GetObject

PresignedGetObject

SetBucketPolicy

SetAppInfo

PutObject

PresignedPutObject

GetBucketPolicy

ListBuckets

CopyObject

PresignedHeadObject

SetBucketNotification

TraceOn

BucketExists

StatObject

PresignedPostPolicy

GetBucketNotification

TraceOff

RemoveBucket

RemoveObject

RemoveAllBucketNotification

SetS3TransferAccelerate

ListObjects

RemoveObjects

ListenBucketNotification

RemoveIncompleteUpload

SetBucketLifecycle

ListIncompleteUploads

FPutObject

GetBucketLifecycle

SetBucketTagging

FGetObject

SetObjectLockConfig

GetBucketTagging

ComposeObject

GetObjectLockConfig

RemoveBucketTagging

EnableVersioning

SetBucketReplication

DisableVersioning

GetBucketReplication

PutObjectRetention

GetBucketEncryption

RemoveBucketReplication

GetObjectRetention

RemoveBucketEncryption

PutObjectLegalHold

GetObjectLegalHold

SelectObjectContent

PutObjectTagging

GetObjectTagging

RemoveObjectTagging

RestoreObject

GetObjectAttributes

1. 构造函数

New(endpoint string, opts *Options) (*Client, error)

初始化一个新的客户端对象。

参数

参数

类型

描述

endpoint

string

S3 兼容的对象存储端点

opts

minio.Options

用于构造新客户端的选项

minio.Options

字段

类型

描述

opts.Creds

*credentials.Credentials

S3 兼容的对象存储访问凭据

opts.Secure

bool

如果为“true”,则 API 请求将是安全的 (HTTPS),否则是不安全的 (HTTP)

opts.Transport

http.RoundTripper

用于执行 HTTP 事务的自定义传输

opts.Region

string

S3 兼容的对象存储区域

opts.BucketLookup

BucketLookupType

存储桶查找类型可以是以下值之一

minio.BucketLookupDNS

minio.BucketLookupPath

minio.BucketLookupAuto

2. 存储桶操作

MakeBucket(ctx context.Context, bucketName string, opts MakeBucketOptions)

创建一个新的存储桶。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

opts

minio.MakeBucketOptions

存储桶选项,例如 Region,存储桶将在其中创建。默认值为 us-east-1。其他有效值如下所示。注意:当与 minio 服务器一起使用时,请使用其配置文件中指定的区域(默认为 us-east-1)。

us-east-1

us-east-2

us-west-1

us-west-2

ca-central-1

eu-west-1

eu-west-2

eu-west-3

eu-central-1

eu-north-1

ap-east-1

ap-south-1

ap-southeast-1

ap-southeast-2

ap-northeast-1

ap-northeast-2

ap-northeast-3

me-south-1

sa-east-1

us-gov-west-1

us-gov-east-1

cn-north-1

cn-northwest-1

示例

// Create a bucket at region 'us-east-1' with object locking enabled.
err = minioClient.MakeBucket(context.Background(), "mybucket", minio.MakeBucketOptions{Region: "us-east-1", ObjectLocking: true})
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("Successfully created mybucket.")

ListBuckets(ctx context.Context) ([]BucketInfo, error)

列出所有存储桶。

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketList

[]minio.BucketInfo

所有存储桶的列表

minio.BucketInfo

字段

类型

描述

bucket.Name

string

存储桶的名称

bucket.CreationDate

time.Time

存储桶创建日期

示例

buckets, err := minioClient.ListBuckets(context.Background())
if err != nil {
    fmt.Println(err)
    return
}
for _, bucket := range buckets {
    fmt.Println(bucket)
}

BucketExists(ctx context.Context, bucketName string) (found bool, err error)

检查存储桶是否存在。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

found

bool

指示存储桶是否存在

err

error

标准错误

示例

found, err := minioClient.BucketExists(context.Background(), "mybucket")
if err != nil {
    fmt.Println(err)
    return
}
if found {
    fmt.Println("Bucket found")
}

RemoveBucket(ctx context.Context, bucketName string) error

删除存储桶,存储桶必须为空才能成功删除。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

示例

err = minioClient.RemoveBucket(context.Background(), "mybucket")
if err != nil {
    fmt.Println(err)
    return
}

ListObjects(ctx context.Context, bucketName string, opts ListObjectsOptions) <-chan ObjectInfo

列出存储桶中的对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

opts

minio.ListObjectsOptions

列出对象的选项

返回值

参数

类型

描述

objectInfo

chan minio.ObjectInfo

存储桶中所有对象的读取通道,对象格式如下:

minio.ObjectInfo

字段

类型

描述

objectInfo.Key

string

对象的名称

objectInfo.Size

int64

对象的大小

objectInfo.ETag

string

对象的 MD5 校验和

objectInfo.LastModified

time.Time

对象最后修改的时间

ctx, cancel := context.WithCancel(context.Background())

defer cancel()

objectCh := minioClient.ListObjects(ctx, "mybucket", minio.ListObjectsOptions{
       Prefix: "myprefix",
       Recursive: true,
})
for object := range objectCh {
    if object.Err != nil {
        fmt.Println(object.Err)
        return
    }
    fmt.Println(object)
}

ListIncompleteUploads(ctx context.Context, bucketName, prefix string, recursive bool) <- chan ObjectMultipartInfo

列出存储桶中部分上传的对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

prefix

string

部分上传对象的的前缀

recursive

bool

true 表示递归式列出,false 表示目录式列出,由 ‘/’ 分隔。

返回值

参数

类型

描述

multiPartInfo

chan minio.ObjectMultipartInfo

发射格式如下所示的多部分对象:

minio.ObjectMultipartInfo

字段

类型

描述

multiPartObjInfo.Key

string

部分上传对象的名称

multiPartObjInfo.UploadID

string

部分上传对象的上传 ID

multiPartObjInfo.Size

int64

部分上传对象的大小

示例

isRecursive := true // Recursively list everything at 'myprefix'
multiPartObjectCh := minioClient.ListIncompleteUploads(context.Background(), "mybucket", "myprefix", isRecursive)
for multiPartObject := range multiPartObjectCh {
    if multiPartObject.Err != nil {
        fmt.Println(multiPartObject.Err)
        return
    }
    fmt.Println(multiPartObject)
}

SetBucketTagging(ctx context.Context, bucketName string, tags *tags.Tags) error

为存储桶设置标签。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

tags

*tags.Tags

存储桶标签

示例

// Create tags from a map.
tags, err := tags.NewTags(map[string]string{
	"Tag1": "Value1",
	"Tag2": "Value2",
}, false)
if err != nil {
	log.Fatalln(err)
}

err = minioClient.SetBucketTagging(context.Background(), "my-bucketname", tags)
if err != nil {
	log.Fatalln(err)
}

GetBucketTagging(ctx context.Context, bucketName string) (*tags.Tags, error)

获取存储桶的标签。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

tags

*tags.Tags

存储桶标签

示例

tags, err := minioClient.GetBucketTagging(context.Background(), "my-bucketname")
if err != nil {
	log.Fatalln(err)
}

fmt.Printf("Fetched Object Tags: %v\n", tags)

RemoveBucketTagging(ctx context.Context, bucketName string) error

删除存储桶上的所有标签。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

示例

err := minioClient.RemoveBucketTagging(context.Background(), "my-bucketname")
if err != nil {
	log.Fatalln(err)
}

3. 对象操作

GetObject(ctx context.Context, bucketName, objectName string, opts GetObjectOptions) (*Object, error)

返回对象数据的流。大多数常见错误发生在读取流时。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.GetObjectOptions

用于 GET 请求的选项,指定其他选项,例如加密、If-Match

minio.GetObjectOptions

字段

类型

描述

opts.ServerSideEncryption

encrypt.ServerSide

encrypt 包提供的接口,用于指定服务器端加密。(有关更多信息,请参阅 https://godoc.org/github.com/minio/minio-go/v7)

opts.Internal

minio.AdvancedGetOptions

此选项用于 MinIO 服务器的内部使用。除非应用程序了解预期用途,否则不应设置此选项。

返回值

参数

类型

描述

object

*minio.Object

minio.Object 表示对象读取器。它实现了 io.Reader、io.Seeker、io.ReaderAt 和 io.Closer 接口。

示例

object, err := minioClient.GetObject(context.Background(), "mybucket", "myobject", minio.GetObjectOptions{})
if err != nil {
    fmt.Println(err)
    return
}
defer object.Close()

localFile, err := os.Create("/tmp/local-file.jpg")
if err != nil {
    fmt.Println(err)
    return
}
defer localFile.Close()

if _, err = io.Copy(localFile, object); err != nil {
    fmt.Println(err)
    return
}

FGetObject(ctx context.Context, bucketName, objectName, filePath string, opts GetObjectOptions) error

下载并将对象保存为本地文件系统中的文件。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

filePath

string

下载对象的路径

opts

minio.GetObjectOptions

用于 GET 请求的选项,指定其他选项,例如加密、If-Match

示例

err = minioClient.FGetObject(context.Background(), "mybucket", "myobject", "/tmp/myobject", minio.GetObjectOptions{})
if err != nil {
    fmt.Println(err)
    return
}

PutObjectFanOut(ctx context.Context, bucket string, body io.Reader, fanOutReq …PutObjectFanOutRequest) ([]PutObjectFanOutResponse, error)

PutObject 的变体,不是从单个流写入单个对象,而是写入多个对象,这些对象通过 PutObjectFanOutRequest 列表定义。PutObjectFanOutRequest 中的每个条目都包含一个对象键名及其相关的元数据(如果有)。Key 是必需的,*PutObjectFanOutRequest( 中的其余选项是可选的。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

fanOutData

io.Reader

任何实现 io.Reader 的 Go 类型

fanOutReq

minio.PutObjectFanOutRequest

将在服务器上创建的所有对象的用户信息列表

minio.PutObjectFanOutRequest

字段

类型

描述

Entries

[]minio.PutObjectFanOutEntyry

对象扇出条目的列表

Checksums

map[string]string

输入数据的校验和

SSE

_encrypt.ServerSide

整个扇出的加密设置

minio.PutObjectFanOutEntry

字段

类型

描述

Key

string

对象的名称

UserMetadata

map[string]string

用户元数据的映射

UserTags

map[string]string

用户对象标签的映射

ContentType

string

对象的 MIME 类型,例如 “application/text”

ContentEncoding

string

对象的编码,例如 “gzip”

ContentDisposition

string

对象的处理方式,例如 “inline”

ContentLanguage

string

对象的语言,例如 “French”

CacheControl

string

用于指定请求和响应中缓存机制的指令,例如 “max-age=600”

Retention

minio.RetentionMode

要设置的保留模式,例如 “COMPLIANCE”

RetainUntilDate

time.Time

保留模式生效的日期

minio.PutObjectFanOutResponse

字段

类型

描述

Key

string

对象的名称

ETag

string

对象的 ETag 不透明唯一值

VersionID

string

上传对象的 VersionID

LastModified

_time.Time

最新对象的最后修改时间

Error

error

仅当特定对象的扇出失败时才为非 nil

PutObject(ctx context.Context, bucketName, objectName string, reader io.Reader, objectSize int64,opts PutObjectOptions) (info UploadInfo, err error)

上传小于 128MiB 的对象,在单个 PUT 操作中完成。对于大小超过 128MiB 的对象,PutObject 会无缝地将对象上传为 128MiB 或更多部分,具体取决于实际文件大小。对象的上传大小上限为 5TB。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

reader

io.Reader

任何实现 io.Reader 的 Go 类型

objectSize

int64

正在上传对象的大小。如果流大小未知,则传递 -1(警告:传递 -1 会分配大量内存)

opts

minio.PutObjectOptions

允许用户设置可选的自定义元数据、内容标头、加密密钥和用于多部分上传操作的线程数量。

minio.PutObjectOptions

字段

类型

描述

opts.UserMetadata

map[string]string

用户元数据的映射

opts.UserTags

map[string]string

用户对象标签的映射

opts.Progress

io.Reader

用于获取上传进度的读取器

opts.ContentType

string

对象的 MIME 类型,例如 “application/text”

opts.ContentEncoding

string

对象的编码,例如 “gzip”

opts.ContentDisposition

string

对象的处理方式,例如 “inline”

opts.ContentLanguage

string

对象的语言,例如 “French”

opts.CacheControl

string

用于指定请求和响应中缓存机制的指令,例如 “max-age=600”

opts.Mode

*minio.RetentionMode

要设置的保留模式,例如 “COMPLIANCE”

opts.RetainUntilDate

*time.Time

保留模式生效的日期

opts.ServerSideEncryption

encrypt.ServerSide

encrypt 包提供的接口,用于指定服务器端加密。(有关更多信息,请参阅 https://godoc.org/github.com/minio/minio-go/v7)

opts.StorageClass

string

指定对象的存储类别。MinIO 服务器支持的值为 REDUCED_REDUNDANCYSTANDARD

opts.WebsiteRedirectLocation

string

指定对象的重定向,到同一个存储桶中的另一个对象或到一个外部 URL。

opts.SendContentMd5

bool

指定是否要在 PutObject 操作中发送 content-md5 标头。请注意,设置此标志会导致内存使用量更高,因为会进行内存中 md5sum 计算。

opts.PartSize

uint64

指定用于上传对象的自定义部分大小

opts.Internal

minio.AdvancedPutOptions

此选项用于 MinIO 服务器的内部使用,除非应用程序了解预期用途,否则不应设置此选项。

minio.UploadInfo

字段

类型

描述

info.ETag

string

新对象的 ETag

info.VersionID

string

新对象的版本标识符

示例

file, err := os.Open("my-testfile")
if err != nil {
    fmt.Println(err)
    return
}
defer file.Close()

fileStat, err := file.Stat()
if err != nil {
    fmt.Println(err)
    return
}

uploadInfo, err := minioClient.PutObject(context.Background(), "mybucket", "myobject", file, fileStat.Size(), minio.PutObjectOptions{ContentType:"application/octet-stream"})
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("Successfully uploaded bytes: ", uploadInfo)

minio-go SDK v3.0.3 版本中提供的 API 方法 PutObjectWithSize、PutObjectWithMetadata、PutObjectStreaming 和 PutObjectWithProgress 已被接受指向 PutObjectOptions 结构体的指针的新 PutObject 调用变体所取代。

CopyObject(ctx context.Context, dst CopyDestOptions, src CopySrcOptions) (UploadInfo, error)

通过对现有对象的服务器端复制来创建或替换对象。它支持条件复制、复制对象的一部分以及目标的服务器端加密和源的解密。有关更多详细信息,请参阅 CopySrcOptionsDestinationInfo 类型。

要将多个源对象复制到单个目标对象,请参阅 ComposeObject API。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

dst

minio.CopyDestOptions

描述目标对象的参数

src

minio.CopySrcOptions

描述源对象的参数

minio.UploadInfo

字段

类型

描述

info.ETag

string

新对象的 ETag

info.VersionID

string

新对象的版本标识符

示例

// Use-case 1: Simple copy object with no conditions.
// Source object
srcOpts := minio.CopySrcOptions{
    Bucket: "my-sourcebucketname",
    Object: "my-sourceobjectname",
}

// Destination object
dstOpts := minio.CopyDestOptions{
    Bucket: "my-bucketname",
    Object: "my-objectname",
}

// Copy object call
uploadInfo, err := minioClient.CopyObject(context.Background(), dst, src)
if err != nil {
    fmt.Println(err)
    return
}

fmt.Println("Successfully copied object:", uploadInfo)
// Use-case 2:
// Copy object with copy-conditions, and copying only part of the source object.
// 1. that matches a given ETag
// 2. and modified after 1st April 2014
// 3. but unmodified since 23rd April 2014
// 4. copy only first 1MiB of object.

// Source object
srcOpts := minio.CopySrcOptions{
    Bucket: "my-sourcebucketname",
    Object: "my-sourceobjectname",
    MatchETag: "31624deb84149d2f8ef9c385918b653a",
    MatchModifiedSince: time.Date(2014, time.April, 1, 0, 0, 0, 0, time.UTC),
    MatchUnmodifiedSince: time.Date(2014, time.April, 23, 0, 0, 0, 0, time.UTC),
    Start: 0,
    End: 1024*1024-1,
}


// Destination object
dstOpts := minio.CopyDestOptions{
    Bucket: "my-bucketname",
    Object: "my-objectname",
}

// Copy object call
_, err = minioClient.CopyObject(context.Background(), dst, src)
if err != nil {
    fmt.Println(err)
    return
}

fmt.Println("Successfully copied object:", uploadInfo)

ComposeObject(ctx context.Context, dst minio.CopyDestOptions, srcs …minio.CopySrcOptions) (UploadInfo, error)

通过使用服务器端复制将源对象的列表连接起来来创建对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

dst

minio.CopyDestOptions

包含有关要创建的对象的信息的结构。

srcs

…minio.CopySrcOptions

包含有关要按顺序连接的源对象的信息的结构切片。

minio.UploadInfo

字段

类型

描述

info.ETag

string

新对象的 ETag

info.VersionID

string

新对象的版本标识符

示例

// Prepare source decryption key (here we assume same key to
// decrypt all source objects.)
sseSrc := encrypt.DefaultPBKDF([]byte("password"), []byte("salt"))

// Source objects to concatenate. We also specify decryption
// key for each
src1Opts := minio.CopySrcOptions{
    Bucket: "bucket1",
    Object: "object1",
    Encryption: sseSrc,
    MatchETag: "31624deb84149d2f8ef9c385918b653a",
}

src2Opts := minio.CopySrcOptions{
    Bucket: "bucket2",
    Object: "object2",
    Encryption: sseSrc,
    MatchETag: "f8ef9c385918b653a31624deb84149d2",
}

src3Opts := minio.CopySrcOptions{
    Bucket: "bucket3",
    Object: "object3",
    Encryption: sseSrc,
    MatchETag: "5918b653a31624deb84149d2f8ef9c38",
}

// Prepare destination encryption key
sseDst := encrypt.DefaultPBKDF([]byte("new-password"), []byte("new-salt"))

// Create destination info
dstOpts := CopyDestOptions{
    Bucket: "bucket",
    Object: "object",
    Encryption: sseDst,
}

// Compose object call by concatenating multiple source files.
uploadInfo, err := minioClient.ComposeObject(context.Background(), dst, srcs...)
if err != nil {
    fmt.Println(err)
    return
}

fmt.Println("Composed object successfully:", uploadInfo)

FPutObject(ctx context.Context, bucketName, objectName, filePath, opts PutObjectOptions) (info UploadInfo, err error)

将文件的内容上传到 objectName。

FPutObject 上传小于 128MiB 的对象,在单个 PUT 操作中完成。对于大小超过 128MiB 的对象,FPutObject 会无缝地将对象上传为 128MiB 或更多部分,具体取决于实际文件大小。对象的上传大小上限为 5TB。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

filePath

string

要上传的文件路径

opts

minio.PutObjectOptions

指向结构体的指针,允许用户设置可选的自定义元数据、内容类型、内容编码、内容处置、内容语言和缓存控制头,传递用于加密对象的加密模块,并可选地配置用于多部分 PUT 操作的线程数。

minio.UploadInfo

字段

类型

描述

info.ETag

string

新对象的 ETag

info.VersionID

string

新对象的版本标识符

示例

uploadInfo, err := minioClient.FPutObject(context.Background(), "my-bucketname", "my-objectname", "my-filename.csv", minio.PutObjectOptions{
	ContentType: "application/csv",
});
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("Successfully uploaded object: ", uploadInfo)

StatObject(ctx context.Context, bucketName, objectName string, opts StatObjectOptions) (ObjectInfo, error)

获取对象的元数据。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.StatObjectOptions

用于 GET 信息/统计请求的选项,指定额外的选项,如加密、If-Match

返回值

参数

类型

描述

objInfo

minio.ObjectInfo

对象统计信息

minio.ObjectInfo

字段

类型

描述

objInfo.LastModified

time.Time

对象最后修改的时间

objInfo.ETag

string

对象的 MD5 校验和

objInfo.ContentType

string

对象的 MIME 类型

objInfo.Size

int64

对象的大小

示例

objInfo, err := minioClient.StatObject(context.Background(), "mybucket", "myobject", minio.StatObjectOptions{})
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println(objInfo)

RemoveObject(ctx context.Context, bucketName, objectName string, opts minio.RemoveObjectOptions) error

使用一些指定选项删除对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.RemoveObjectOptions

允许用户设置选项

minio.RemoveObjectOptions

字段

类型

描述

opts.GovernanceBypass

bool

设置绕过治理头以删除使用 GOVERNANCE 模式锁定的对象

opts.VersionID

string

要删除的对象的版本 ID

opts.Internal

minio.AdvancedRemoveOptions

此选项用于 MinIO 服务器的内部使用,除非应用程序了解预期用途,否则不应设置此选项。

opts := minio.RemoveObjectOptions {
		GovernanceBypass: true,
		VersionID: "myversionid",
		}
err = minioClient.RemoveObject(context.Background(), "mybucket", "myobject", opts)
if err != nil {
    fmt.Println(err)
    return
}

PutObjectRetention(ctx context.Context, bucketName, objectName string, opts minio.PutObjectRetentionOptions) error

将对象保留锁应用于对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.PutObjectRetentionOptions

允许用户设置选项,如保留模式、过期日期和版本 ID

RemoveObjects(ctx context.Context, bucketName string, objectsCh <-chan ObjectInfo, opts RemoveObjectsOptions) <-chan RemoveObjectError

删除从输入通道获得的对象列表。调用会向服务器发送删除请求,每次最多 1000 个对象。观察到的错误会通过错误通道发送。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectsCh

chan minio.ObjectInfo

要删除的对象通道

opts

minio.RemoveObjectsOptions

允许用户设置选项

minio.RemoveObjectsOptions

字段

类型

描述

opts.GovernanceBypass

bool

设置绕过治理头以删除使用 GOVERNANCE 模式锁定的对象

返回值

参数

类型

描述

errorCh

<-chan minio.RemoveObjectError

仅接收删除期间观察到的错误的通道。

objectsCh := make(chan minio.ObjectInfo)

// Send object names that are needed to be removed to objectsCh
go func() {
	defer close(objectsCh)
	// List all objects from a bucket-name with a matching prefix.
	for object := range minioClient.ListObjects(context.Background(), "my-bucketname", "my-prefixname", true, nil) {
		if object.Err != nil {
			log.Fatalln(object.Err)
		}
		objectsCh <- object
	}
}()

opts := minio.RemoveObjectsOptions{
	GovernanceBypass: true,
}

for rErr := range minioClient.RemoveObjects(context.Background(), "my-bucketname", objectsCh, opts) {
    fmt.Println("Error detected during deletion: ", rErr)
}

GetObjectRetention(ctx context.Context, bucketName, objectName, versionID string) (mode *RetentionMode, retainUntilDate *time.Time, err error)

返回在给定对象上设置的保留。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

versionID

string

对象的版本 ID

err = minioClient.PutObjectRetention(context.Background(), "mybucket", "myobject", "")
if err != nil {
    fmt.Println(err)
    return
}

PutObjectLegalHold(ctx context.Context, bucketName, objectName string, opts minio.PutObjectLegalHoldOptions) error

将法律保留应用于对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.PutObjectLegalHoldOptions

允许用户设置选项,如状态和版本 ID

minio.PutObjectLegalHoldOptions

字段

类型

描述

opts.Status

*minio.LegalHoldStatus

要设置的法律保留状态

opts.VersionID

string

要应用保留的对象的版本 ID

s := minio.LegalHoldEnabled
opts := minio.PutObjectLegalHoldOptions {
    Status: &s,
}
err = minioClient.PutObjectLegalHold(context.Background(), "mybucket", "myobject", opts)
if err != nil {
    fmt.Println(err)
    return
}

GetObjectLegalHold(ctx context.Context, bucketName, objectName, versionID string) (status *LegalHoldStatus, err error)

返回给定对象的法律保留状态。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.GetObjectLegalHoldOptions

允许用户设置选项,如版本 ID

opts := minio.GetObjectLegalHoldOptions{}
err = minioClient.GetObjectLegalHold(context.Background(), "mybucket", "myobject", opts)
if err != nil {
    fmt.Println(err)
    return
}

SelectObjectContent(ctx context.Context, bucketName string, objectsName string, expression string, options SelectObjectOptions) *SelectResults

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

ctx

context.Context

请求上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

options

SelectObjectOptions

查询选项

返回值

参数

类型

描述

SelectResults

SelectResults

是 io.ReadCloser 对象,可以直接传递给 csv.NewReader 用于处理输出。

	// Initialize minio client object.
	minioClient, err := minio.New(endpoint, &minio.Options{
		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
		Secure: useSSL,
	})

	opts := minio.SelectObjectOptions{
		Expression:     "select count(*) from s3object",
		ExpressionType: minio.QueryExpressionTypeSQL,
		InputSerialization: minio.SelectObjectInputSerialization{
			CompressionType: minio.SelectCompressionNONE,
			CSV: &minio.CSVInputOptions{
				FileHeaderInfo:  minio.CSVFileHeaderInfoNone,
				RecordDelimiter: "\n",
				FieldDelimiter:  ",",
			},
		},
		OutputSerialization: minio.SelectObjectOutputSerialization{
			CSV: &minio.CSVOutputOptions{
				RecordDelimiter: "\n",
				FieldDelimiter:  ",",
			},
		},
	}

	reader, err := s3Client.SelectObjectContent(context.Background(), "mycsvbucket", "mycsv.csv", opts)
	if err != nil {
		log.Fatalln(err)
	}
	defer reader.Close()

	if _, err := io.Copy(os.Stdout, reader); err != nil {
		log.Fatalln(err)
	}

PutObjectTagging(ctx context.Context, bucketName, objectName string, otags *tags.Tags) error

为给定对象设置新的对象标签,替换/覆盖任何现有标签。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

objectTags

*tags.Tags

包含对象标签键和值的映射

示例

err = minioClient.PutObjectTagging(context.Background(), bucketName, objectName, objectTags)
if err != nil {
    fmt.Println(err)
    return
}

GetObjectTagging(ctx context.Context, bucketName, objectName string) (*tags.Tags, error)

从给定对象获取对象标签

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

示例

tags, err = minioClient.GetObjectTagging(context.Background(), bucketName, objectName)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Printf("Fetched Tags: %s", tags)

RemoveObjectTagging(ctx context.Context, bucketName, objectName string) error

从给定对象中删除对象标签

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

示例

err = minioClient.RemoveObjectTagging(context.Background(), bucketName, objectName)
if err != nil {
    fmt.Println(err)
    return
}

RestoreObject(ctx context.Context, bucketName, objectName, versionID string, opts minio.RestoreRequest) error

还原或对已归档对象执行 SQL 操作

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

versionID

string

对象的版本 ID

opts

_minio.RestoreRequest

还原请求选项

示例

opts := minio.RestoreRequest{}
opts.SetDays(1)
opts.SetGlacierJobParameters(minio.GlacierJobParameters{Tier: minio.TierStandard})

err = s3Client.RestoreObject(context.Background(), "your-bucket", "your-object", "", opts)
if err != nil {
    log.Fatalln(err)
}

GetObjectAttributes(ctx context.Context, bucketName, objectName string, opts ObjectAttributesOptions) (*ObjectAttributes, error)

返回对象数据的流。大多数常见错误发生在读取流时。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

opts

minio.ObjectAttributesOptions

用于分页和选择对象属性的配置

minio.ObjectAttributesOptions

字段

类型

描述

opts.ServerSideEncryption

encrypt.ServerSide

encrypt 包提供的接口,用于指定服务器端加密。(有关更多信息,请参阅 https://godoc.org/github.com/minio/minio-go/v7)

opts.MaxParts

_int

此选项定义 API 应返回多少个部分

opts.VersionID

_string

VersionID 定义将使用对象的哪个版本

opts.PartNumberMarker

_int

此选项定义分页将从哪个部分编号开始,部分编号等于 PartNumberMarker 的部分将不会包含在响应中

返回值

参数

类型

描述

objectAttributes

*minio.ObjectAttributes

minio.ObjectAttributes 包含有关对象及其部分的信息。

示例

objectAttributes, err := c.GetObjectAttributes(
    context.Background(), 
    "your-bucket", 
    "your-object", 
    minio.ObjectAttributesOptions{
        VersionID:"object-version-id",
        NextPartMarker:0,
        MaxParts:100,
    })

if err != nil {
    fmt.Println(err)
	return
}

fmt.Println(objectAttributes)

RemoveIncompleteUpload(ctx context.Context, bucketName, objectName string) error

删除部分上传的对象。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

示例

err = minioClient.RemoveIncompleteUpload(context.Background(), "mybucket", "myobject")
if err != nil {
    fmt.Println(err)
    return
}

4. 预签名的操作

PresignedGetObject(ctx context.Context, bucketName, objectName string, expiry time.Duration, reqParams url.Values) (*url.URL, error)

生成用于 HTTP GET 操作的预签名 URL。即使存储桶是私有的,浏览器/移动客户端也可以指向此 URL 以直接下载对象。此预签名 URL 可以具有关联的到期时间(以秒为单位),到期后它将不再有效。最大到期时间为 604800 秒(即 7 天),最小到期时间为 1 秒。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

expiry

time.Duration

预签名 URL 的到期时间(以秒为单位)

reqParams

url.Values

其他响应头覆盖支持 response-expiresresponse-content-typeresponse-cache-controlresponse-content-disposition

示例

// Set request parameters for content-disposition.
reqParams := make(url.Values)
reqParams.Set("response-content-disposition", "attachment; filename=\"your-filename.txt\"")

// Generates a presigned url which expires in a day.
presignedURL, err := minioClient.PresignedGetObject(context.Background(), "mybucket", "myobject", time.Second * 24 * 60 * 60, reqParams)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("Successfully generated presigned URL", presignedURL)

PresignedPutObject(ctx context.Context, bucketName, objectName string, expiry time.Duration) (*url.URL, error)

生成用于 HTTP PUT 操作的预签名 URL。即使存储桶是私有的,浏览器/移动客户端也可以指向此 URL 以将对象直接上传到存储桶。此预签名 URL 可以具有关联的到期时间(以秒为单位),到期后它将不再有效。默认到期时间设置为 7 天。

注意:您只能使用指定的物体名称上传到 S3。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

expiry

time.Duration

预签名 URL 的到期时间(以秒为单位)

示例

// Generates a url which expires in a day.
expiry := time.Second * 24 * 60 * 60 // 1 day.
presignedURL, err := minioClient.PresignedPutObject(context.Background(), "mybucket", "myobject", expiry)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("Successfully generated presigned URL", presignedURL)

PresignedHeadObject(ctx context.Context, bucketName, objectName string, expiry time.Duration, reqParams url.Values) (*url.URL, error)

生成用于 HTTP HEAD 操作的预签名 URL。即使存储桶是私有的,浏览器/移动客户端也可以指向此 URL 以直接从对象获取元数据。此预签名 URL 可以具有关联的到期时间(以秒为单位),到期后它将不再有效。默认到期时间设置为 7 天。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

objectName

string

对象的名称

expiry

time.Duration

预签名 URL 的到期时间(以秒为单位)

reqParams

url.Values

其他响应头覆盖支持 response-expiresresponse-content-typeresponse-cache-controlresponse-content-disposition

示例

// Set request parameters for content-disposition.
reqParams := make(url.Values)
reqParams.Set("response-content-disposition", "attachment; filename=\"your-filename.txt\"")

// Generates a presigned url which expires in a day.
presignedURL, err := minioClient.PresignedHeadObject(context.Background(), "mybucket", "myobject", time.Second * 24 * 60 * 60, reqParams)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Println("Successfully generated presigned URL", presignedURL)

PresignedPostPolicy(ctx context.Context, post PostPolicy) (*url.URL, map[string]string, error)

允许将策略条件设置为用于 POST 操作的预签名 URL。可以设置策略,例如用于接收对象上传的存储桶名称、键名称前缀、过期策略。

// Initialize policy condition config.
policy := minio.NewPostPolicy()

// Apply upload policy restrictions:
policy.SetBucket("mybucket")
policy.SetKey("myobject")
policy.SetExpires(time.Now().UTC().AddDate(0, 0, 10)) // expires in 10 days

// Only allow 'png' images.
policy.SetContentType("image/png")

// Only allow content size in range 1KB to 1MB.
policy.SetContentLengthRange(1024, 1024*1024)

// Add a user metadata using the key "custom" and value "user"
policy.SetUserMetadata("custom", "user")

// Get the POST form key/value object:
url, formData, err := minioClient.PresignedPostPolicy(context.Background(), policy)
if err != nil {
    fmt.Println(err)
    return
}

// POST your content from the command line using `curl`
fmt.Printf("curl ")
for k, v := range formData {
    fmt.Printf("-F %s=%s ", k, v)
}
fmt.Printf("-F file=@/etc/bash.bashrc ")
fmt.Printf("%s\n", url)

5. 存储桶策略/通知操作

SetBucketPolicy(ctx context.Context, bucketname, policy string) error

设置存储桶或对象前缀的访问权限。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

policy

string

要设置的策略

返回值

参数

类型

描述

err

error

标准错误

示例

policy := `{"Version": "2012-10-17","Statement": [{"Action": ["s3:GetObject"],"Effect": "Allow","Principal": {"AWS": ["*"]},"Resource": ["arn:aws:s3:::my-bucketname/*"],"Sid": ""}]}`

err = minioClient.SetBucketPolicy(context.Background(), "my-bucketname", policy)
if err != nil {
    fmt.Println(err)
    return
}

GetBucketPolicy(ctx context.Context, bucketName string) (policy string, error)

获取存储桶或前缀的访问权限。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

policy

string

服务器返回的策略

err

error

标准错误

示例

policy, err := minioClient.GetBucketPolicy(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}

GetBucketNotification(ctx context.Context, bucketName string) (notification.Configuration, error)

获取存储桶上的通知配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

config

notification.Configuration

包含所有通知配置的结构

err

error

标准错误

示例

bucketNotification, err := minioClient.GetBucketNotification(context.Background(), "mybucket")
if err != nil {
    fmt.Println("Failed to get bucket notification configurations for mybucket", err)
    return
}

for _, queueConfig := range bucketNotification.QueueConfigs {
    for _, e := range queueConfig.Events {
        fmt.Println(e + " event is enabled")
    }
}

SetBucketNotification(ctx context.Context, bucketName string, config notification.Configuration) error

在存储桶上设置新的存储桶通知。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

config

notification.Configuration

表示要发送到配置的 Web 服务的 XML

返回值

参数

类型

描述

err

error

标准错误

示例

queueArn := notification.NewArn("aws", "sqs", "us-east-1", "804605494417", "PhotoUpdate")

queueConfig := notification.NewConfig(queueArn)
queueConfig.AddEvents(minio.ObjectCreatedAll, minio.ObjectRemovedAll)
queueConfig.AddFilterPrefix("photos/")
queueConfig.AddFilterSuffix(".jpg")

config := notification.Configuration{}
config.AddQueue(queueConfig)

err = minioClient.SetBucketNotification(context.Background(), "mybucket", config)
if err != nil {
    fmt.Println("Unable to set the bucket notification: ", err)
    return
}

RemoveAllBucketNotification(ctx context.Context, bucketName string) error

删除存储桶上配置的所有存储桶通知。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

err

error

标准错误

示例

err = minioClient.RemoveAllBucketNotification(context.Background(), "mybucket")
if err != nil {
    fmt.Println("Unable to remove bucket notifications.", err)
    return
}

ListenBucketNotification(context context.Context, bucketName, prefix, suffix string, events []string) <-chan notification.Info

ListenBucketNotification API 通过通知通道接收存储桶通知事件。返回的通知通道具有两个字段“Records”和“Err”。

  • “Records”包含从服务器接收到的通知。

  • “Err”指示处理收到的通知时发生的任何错误。

注意:通知通道在第一次出现错误时关闭。

参数

参数

类型

描述

bucketName

string

要侦听通知的存储桶

prefix

string

要过滤通知的对象键前缀

suffix

string

要过滤通知的对象键后缀

events

[]string

启用特定事件类型的通知

返回值

参数

类型

描述

notificationInfo

chan notification.Info

存储桶通知通道

minio.NotificationInfo

|字段 |类型 |描述 | |notificationInfo.Records | []notification.Event | 通知事件集合 | |notificationInfo.Err | error | 携带操作期间发生的任何错误(标准错误) |

示例

// Listen for bucket notifications on "mybucket" filtered by prefix, suffix and events.
for notificationInfo := range minioClient.ListenBucketNotification(context.Background(), "mybucket", "myprefix/", ".mysuffix", []string{
    "s3:ObjectCreated:*",
    "s3:ObjectAccessed:*",
    "s3:ObjectRemoved:*",
    }) {
    if notificationInfo.Err != nil {
        fmt.Println(notificationInfo.Err)
    }
    fmt.Println(notificationInfo)
}

ListenNotification(context context.Context, prefix, suffix string, events []string) <-chan notification.Info

ListenNotification API 通过通知通道接收存储桶和对象通知事件。返回的通知通道具有两个字段“Records”和“Err”。

  • “Records”包含从服务器接收到的通知。

  • “Err”指示处理收到的通知时发生的任何错误。

注意:通知通道在第一次出现错误时关闭。

参数

参数

类型

描述

bucketName

string

要侦听通知的存储桶

prefix

string

要过滤通知的对象键前缀

suffix

string

要过滤通知的对象键后缀

events

[]string

启用特定事件类型的通知

返回值

参数

类型

描述

notificationInfo

chan notification.Info

读取所有通知的通道

minio.NotificationInfo

|字段 |类型 |描述 | |notificationInfo.Records | []notification.Event | 通知事件集合 | |notificationInfo.Err | error | 携带操作期间发生的任何错误(标准错误) |

示例

// Listen for bucket notifications on "mybucket" filtered by prefix, suffix and events.
for notificationInfo := range minioClient.ListenNotification(context.Background(), "myprefix/", ".mysuffix", []string{
    "s3:BucketCreated:*",
    "s3:BucketRemoved:*",
    "s3:ObjectCreated:*",
    "s3:ObjectAccessed:*",
    "s3:ObjectRemoved:*",
    }) {
    if notificationInfo.Err != nil {
        fmt.Println(notificationInfo.Err)
    }
    fmt.Println(notificationInfo)
}

SetBucketLifecycle(ctx context.Context, bucketname, config *lifecycle.Configuration) error

设置存储桶或对象前缀的生命周期。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

config

lifecycle.Configuration

要设置的生命周期

返回值

参数

类型

描述

err

error

标准错误

示例

config := lifecycle.NewConfiguration()
config.Rules = []lifecycle.Rule{
  {
    ID:     "expire-bucket",
    Status: "Enabled",
    Expiration: lifecycle.Expiration{
       Days: 365,
    },
  },
}

err = minioClient.SetBucketLifecycle(context.Background(), "my-bucketname", config)
if err != nil {
    fmt.Println(err)
    return
}

GetBucketLifecycle(ctx context.Context, bucketName string) (*lifecycle.Configuration error)

获取存储桶或前缀的生命周期。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

config

lifecycle.Configuration

服务器返回的生命周期

err

error

标准错误

示例

lifecycle, err := minioClient.GetBucketLifecycle(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}

SetBucketEncryption(ctx context.Context, bucketname string, config sse.Configuration) error

在存储桶上设置默认加密配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

config

sse.Configuration

保存要设置的默认加密配置的结构

返回值

参数

类型

描述

err

error

标准错误

示例

s3Client, err := minio.New("s3.amazonaws.com", &minio.Options{
	Creds:  credentials.NewStaticV4("YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ""),
	Secure: true,
})
if err != nil {
    log.Fatalln(err)
}

// Set default encryption configuration on an S3 bucket
err = s3Client.SetBucketEncryption(context.Background(), "my-bucketname", sse.NewConfigurationSSES3())
if err != nil {
    log.Fatalln(err)
}

GetBucketEncryption(ctx context.Context, bucketName string) (*sse.Configuration, error)

获取存储桶上设置的默认加密配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

config

sse.Configuration

保存默认加密配置的结构

err

error

标准错误

示例

s3Client, err := minio.New("s3.amazonaws.com", &minio.Options{
	Creds:  credentials.NewStaticV4("YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ""),
	Secure: true,
})
if err != nil {
    log.Fatalln(err)
}

// Get default encryption configuration set on an S3 bucket and print it out
encryptionConfig, err := s3Client.GetBucketEncryption(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}
fmt.Printf("%+v\n", encryptionConfig)

RemoveBucketEncryption(ctx context.Context, bucketName string) (error)

移除存储桶上设置的默认加密配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

err

error

标准错误

示例

err := s3Client.RemoveBucketEncryption(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}
// "my-bucket" is successfully deleted/removed.

SetObjectLockConfig(ctx context.Context, bucketname, mode *RetentionMode, validity *uint, unit *ValidityUnit) error

在给定存储桶中设置对象锁定配置。mode、validity 和 unit 必须全部设置或全部为空。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

mode

RetentionMode

要设置的保留模式

validity

uint

要设置的有效期

unit

ValidityUnit

有效期的单位

返回值

参数

类型

描述

err

error

标准错误

示例

mode := Governance
validity := uint(30)
unit := Days

err = minioClient.SetObjectLockConfig(context.Background(), "my-bucketname", &mode, &validity, &unit)
if err != nil {
    fmt.Println(err)
    return
}

GetObjectLockConfig(ctx context.Context, bucketName string) (objectLock,*RetentionMode, *uint, *ValidityUnit, error)

获取给定存储桶的对象锁定配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

objectLock

objectLock

锁定启用状态

mode

RetentionMode

当前保留模式

validity

uint

当前有效期

unit

ValidityUnit

有效期的单位

err

error

标准错误

示例

enabled, mode, validity, unit, err := minioClient.GetObjectLockConfig(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}
fmt.Println("object lock is %s for this bucket",enabled)
if mode != nil {
	fmt.Printf("%v mode is enabled for %v %v for bucket 'my-bucketname'\n", *mode, *validity, *unit)
} else {
	fmt.Println("No mode is enabled for bucket 'my-bucketname'")
}

EnableVersioning(ctx context.Context, bucketName string) error

启用存储桶版本控制支持。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

err

error

标准错误

示例

err := minioClient.EnableVersioning(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}

fmt.Println("versioning enabled for bucket 'my-bucketname'")

DisableVersioning(ctx context.Context, bucketName) error

禁用存储桶版本控制支持。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

err

error

标准错误

示例

err := minioClient.DisableVersioning(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}

fmt.Println("versioning disabled for bucket 'my-bucketname'")

GetBucketVersioning(ctx context.Context, bucketName string) (BucketVersioningConfiguration, error)

获取存储桶上设置的版本控制配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

configuration

minio.BucketVersioningConfiguration

保存版本控制配置的结构

err

error

标准错误

示例

s3Client, err := minio.New("s3.amazonaws.com", &minio.Options{
	Creds:  credentials.NewStaticV4("YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ""),
	Secure: true,
})
if err != nil {
    log.Fatalln(err)
}

// Get versioning configuration set on an S3 bucket and print it out
versioningConfig, err := s3Client.GetBucketVersioning(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}
fmt.Printf("%+v\n", versioningConfig)

SetBucketReplication(ctx context.Context, bucketname, cfg replication.Config) error

在存储桶上设置复制配置。可以通过首先使用 mc admin bucket remote set 在 MinIO 上定义复制目标来获取角色,以便将源存储桶和目标存储桶与复制端点相关联,以进行复制。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

cfg

replication.Config

要设置的复制配置

返回值

参数

类型

描述

err

error

标准错误

示例

replicationStr := `<ReplicationConfiguration>
   <Role></Role>
   <Rule>
      <DeleteMarkerReplication>
         <Status>Disabled</Status>
      </DeleteMarkerReplication>
      <Destination>
         <Bucket>string</Bucket>
         <StorageClass>string</StorageClass>
      </Destination>
      <Filter>
         <And>
            <Prefix>string</Prefix>
            <Tag>
               <Key>string</Key>
               <Value>string</Value>
            </Tag>
            ...
         </And>
         <Prefix>string</Prefix>
         <Tag>
            <Key>string</Key>
            <Value>string</Value>
         </Tag>
      </Filter>
      <ID>string</ID>
      <Prefix>string</Prefix>
      <Priority>integer</Priority>
      <Status>string</Status>
   </Rule>
</ReplicationConfiguration>`
replicationConfig := replication.Config{}
if err := xml.Unmarshal([]byte(replicationStr), &replicationConfig); err != nil {
    log.Fatalln(err)
}
cfg.Role := "arn:minio:s3::598361bf-3cec-49a7-b529-ce870a34d759:*"
err = minioClient.SetBucketReplication(context.Background(), "my-bucketname", replicationConfig)
if err != nil {
    fmt.Println(err)
    return
}

GetBucketReplication(ctx context.Context, bucketName string) (replication.Config, error)

获取存储桶上的当前复制配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

replication

replication.Config

服务器返回的复制配置

err

error

标准错误

示例

replication, err := minioClient.GetBucketReplication(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}

RemoveBucketReplication(ctx context.Context, bucketname string) error

移除存储桶上的复制配置。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

err

error

标准错误

示例

err = minioClient.RemoveBucketReplication(context.Background(), "my-bucketname")
if err != nil {
    fmt.Println(err)
    return
}

GetBucketReplicationMetrics(ctx context.Context, bucketName string) (replication.Metrics, error)

获取存储桶上的最新复制指标。这是 MinIO 特定的扩展。

参数

参数

类型

描述

ctx

context.Context

用于调用超时/取消的自定义上下文

bucketName

string

存储桶的名称

返回值

参数

类型

描述

metrics

replication.Metrics

服务器返回的复制指标

err

error

标准错误

示例

replMetrics, err := minioClient.GetBucketReplicationMetrics(context.Background(), "my-bucketname")
if err != nil {
    log.Fatalln(err)
}

6. 客户端自定义设置

SetAppInfo(appName, appVersion string)

向 User-Agent 添加自定义应用程序详细信息。

参数

参数

类型

描述

appName

string

执行 API 请求的应用程序的名称。

appVersion

string

执行 API 请求的应用程序的版本。

示例

// Set Application name and version to be used in subsequent API requests.
minioClient.SetAppInfo("myCloudApp", "1.0.0")

TraceOn(outputStream io.Writer)

启用 HTTP 跟踪。跟踪将写入提供的 io.Writer。如果 outputStream 为空,则跟踪将写入 os.Stdout。

参数

参数

类型

描述

outputStream

io.Writer

HTTP 跟踪将写入 outputStream 中。

TraceOff()

禁用 HTTP 跟踪。

SetS3TransferAccelerate(acceleratedEndpoint string)

为所有后续 API 请求设置 AWS S3 传输加速端点。注意:此 API 仅适用于 AWS S3,对于 S3 兼容的对象存储服务是无操作的。

参数

参数

类型

描述

acceleratedEndpoint

string

设置为新的 S3 传输加速端点。