文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

Go 快速入门指南

MinIO Go Client API ReferenceSlack

初始化 MinIO Client 对象。

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

Bucket operations

对象操作

预签名操作

Bucket Policy/Notification Operations

客户端自定义设置

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

1. 构造函数

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

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

参数

Param

类型

描述

endpoint

字符串

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

字符串

S3兼容对象存储区域

opts.BucketLookup

BucketLookupType

Bucket lookup type 可以是以下值之一

minio.BucketLookupDNS

minio.BucketLookupPath

minio.BucketLookupAuto

2. 存储桶操作

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

创建一个新的存储桶。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

opts

minio.MakeBucketOptions

Bucket options such asRegion存储桶的创建位置。默认值为 us-east-1。其他有效值如下所列。注意:与 minio server 一起使用时,请使用其配置文件中指定的区域(默认为 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

Example

// 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)

列出所有存储桶。

Param

类型

描述

ctx

context.Context

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

bucketList

[]minio.BucketInfo

所有存储桶列表

minio.BucketInfo

字段

类型

描述

bucket.Name

字符串

存储桶的名称

bucket.CreationDate

time.Time

存储桶创建日期

Example

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)

检查存储桶是否存在。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

found

bool

指示存储桶是否存在

err

错误

标准错误

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

Example

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

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

列出存储桶中的对象。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

opts

minio.ListObjectsOptions

按选项列出对象

返回值

Param

类型

描述

objectInfo

chan minio.ObjectInfo

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

minio.ObjectInfo

字段

类型

描述

objectInfo.Key

字符串

对象名称

objectInfo.Size

int64

对象的大小

objectInfo.ETag

字符串

对象的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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

prefix

字符串

部分上传对象的前缀

recursive

bool

true表示递归式列表和false表示以‘/’分隔的目录样式列表。

返回值

Param

类型

描述

multiPartInfo

chan minio.ObjectMultipartInfo

发出以下格式的多部分对象:

minio.ObjectMultipartInfo

字段

类型

描述

multiPartObjInfo.Key

字符串

未完全上传的对象名称

multiPartObjInfo.UploadID

字符串

未完全上传对象的上传ID

multiPartObjInfo.Size

int64

未完全上传对象的大小

Example

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

为存储桶设置标签。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

tags

*tags.Tags

Bucket 标签

Example

// 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)

获取存储桶的标签。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

tags

*tags.Tags

Bucket 标签

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

Example

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

3. Object operations

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

opts

minio.GetObjectOptions

GET 请求的选项,用于指定加密、If-Match 等附加选项

minio.GetObjectOptions

字段

类型

描述

opts.ServerSideEncryption

encrypt.ServerSide

Interface provided byencryptpackage to specify server-side-encryption. (For more information see https://godoc.org/github.com/minio/minio-go/v7)

opts.Internal

minio.AdvancedGetOptions

此选项仅供 MinIO 服务器内部使用。除非应用程序明确知晓其预期用途,否则不应设置此选项。

返回值

Param

类型

描述

object

*minio.Object

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

Example

object, err := minioClient.GetObject(context.Background(), "mybucket", "myobject", minio.GetObjectOptions{})
if err != nil {
    fmt.Println(err)
    return
}
localFile, err := os.Create("/tmp/local-file.jpg")
if err != nil {
    fmt.Println(err)
    return
}
if _, err = io.Copy(localFile, object); err != nil {
    fmt.Println(err)
    return
}

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

filePath

字符串

下载对象的路径

opts

minio.GetObjectOptions

GET 请求的选项,指定加密、If-Match 等附加选项

Example

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

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

对于小于128MiB的对象,通过单次PUT操作完成上传。对于大于128MiB的对象,PutObject会根据实际文件大小,将对象无缝分割为128MiB或更大的分段进行上传。单个对象的最大上传容量为5TB。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

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

字符串

对象的内容类型,例如 "application/text"

opts.ContentEncoding

字符串

对象的内容编码,例如 "gzip"

opts.ContentDisposition

字符串

对象的内容配置方式,"inline"

opts.ContentLanguage

字符串

对象的内容语言,例如“法语”

opts.CacheControl

字符串

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

opts.Mode

*minio.RetentionMode

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

opts.RetainUntilDate

*time.Time

保留策略应用的有效截止时间

opts.ServerSideEncryption

encrypt.ServerSide

Interface provided byencryptpackage to specify server-side-encryption. (For more information see https://godoc.org/github.com/minio/minio-go/v7)

opts.StorageClass

字符串

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

opts.WebsiteRedirectLocation

字符串

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

opts.SendContentMd5

bool

请指定是否要发送content-md5header with PutObject operation. Note that setting this flag will cause higher memory usage because of in-memorymd5sum计算。

opts.PartSize

uint64

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

opts.Internal

minio.AdvancedPutOptions

此选项仅供 MinIO 服务器内部使用,除非应用程序明确知晓其用途,否则不应设置。

minio.UploadInfo

字段

类型

描述

info.ETag

字符串

新对象的 ETag

info.VersionID

字符串

新对象的版本标识符

Example

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 已被新的 PutObject 调用变体取代,该变体接受指向 PutObjectOptions 结构体的指针。

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

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

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

参数

Param

类型

描述

ctx

context.Context

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

dst

minio.CopyDestOptions

描述目标对象的参数

src

minio.CopySrcOptions

描述源对象的参数

minio.UploadInfo

字段

类型

描述

info.ETag

字符串

新对象的 ETag

info.VersionID

字符串

新对象的版本标识符

Example

// 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)

通过服务器端复制连接源对象列表来创建一个对象。

参数

Param

类型

描述

ctx

context.Context

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

dst

minio.CopyDestOptions

包含待创建对象信息的结构体。

srcs

…minio.CopySrcOptions

包含源对象信息的结构体切片,按顺序进行拼接。

minio.UploadInfo

字段

类型

描述

info.ETag

字符串

新对象的 ETag

info.VersionID

字符串

新对象的版本标识符

Example

// 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。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

filePath

字符串

要上传的文件路径

opts

minio.PutObjectOptions

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

minio.UploadInfo

字段

类型

描述

info.ETag

字符串

新对象的 ETag

info.VersionID

字符串

新对象的版本标识符

Example

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)

获取对象的元数据。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

opts

minio.StatObjectOptions

GET info/stat 请求的选项,用于指定加密、If-Match 等附加选项

返回值

Param

类型

描述

objInfo

minio.ObjectInfo

对象统计信息

minio.ObjectInfo

字段

类型

描述

objInfo.LastModified

time.Time

对象最后修改时间

objInfo.ETag

字符串

对象的MD5校验和

objInfo.ContentType

字符串

对象的内容类型

objInfo.Size

int64

对象的大小

Example

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

移除具有某些指定选项的对象

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

opts

minio.RemoveObjectOptions

允许用户设置选项

minio.RemoveObjectOptions

字段

类型

描述

opts.GovernanceBypass

bool

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

opts.VersionID

字符串

要删除的对象的版本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

对对象应用对象保留锁。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

opts

minio.PutObjectRetentionOptions

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

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectsCh

chan minio.ObjectInfo

要移除的对象通道

opts

minio.RemoveObjectsOptions

允许用户设置选项

minio.RemoveObjectsOptions

字段

类型

描述

opts.GovernanceBypass

bool

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

返回值

Param

类型

描述

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

versionID

字符串

对象的版本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

对对象应用法律保留。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

opts

minio.PutObjectLegalHoldOptions

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

minio.PutObjectLegalHoldOptions

字段

类型

描述

opts.Status

*minio.LegalHoldStatus

要设置的 Legal-Hold 状态

opts.VersionID

字符串

要应用保留的对象版本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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

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, objectName string, expression string, options SelectObjectOptions) *SelectResults

参数

Param

类型

描述

ctx

context.Context

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

ctx

context.Context

请求上下文

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

options

SelectObjectOptions

查询选项

返回值

Param

类型

描述

SelectResults

选择结果

这是一个可以直接传递给 csv.NewReader 进行输出处理的 io.ReadCloser 对象。

        // 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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

objectTags

*tags.Tags

Map with Object Tag’s Key and Value

Example

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)

从给定对象中获取对象标签

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

Example

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操作

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

versionID

字符串

对象的版本ID

opts

_minio.RestoreRequest

恢复请求选项

Example

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

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

删除部分上传的对象。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

Example

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秒。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

expiry

time.Duration

预签名URL的过期时间(秒)

reqParams

url.Values

附加响应标头覆盖支持response-expires, response-content-type, response-cache-control, response-content-disposition.

Example

// 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。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

expiry

time.Duration

预签名URL的过期时间(秒)

Example

// 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天。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

objectName

字符串

对象名称

expiry

time.Duration

预签名URL的过期时间(秒)

reqParams

url.Values

附加响应标头覆盖支持response-expires, response-content-type, response-cache-control, response-content-disposition.

Example

// 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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

policy

字符串

要设置的策略

返回值

Param

类型

描述

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

policy

字符串

服务器返回的策略

err

错误

标准错误

Example

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

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

获取存储桶的通知配置。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

config

notification.Configuration

存储所有通知配置的结构

err

错误

标准错误

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

config

notification.Configuration

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

返回值

Param

类型

描述

err

错误

标准错误

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

err

错误

标准错误

Example

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’表示处理接收到的通知时出现的任何错误。

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

参数

Param

类型

描述

bucketName

字符串

要监听通知的存储桶

prefix

字符串

用于筛选通知的对象键前缀

suffix

字符串

用于过滤通知的对象键后缀

events

[]string

启用特定事件类型的通知

返回值

Param

类型

描述

notificationInfo

chan notification.Info

存储桶通知通道

minio.NotificationInfo

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

Example

// 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’表示处理接收到的通知时出现的任何错误。

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

参数

Param

类型

描述

bucketName

字符串

要监听通知的存储桶

prefix

字符串

用于筛选通知的对象键前缀

suffix

字符串

用于过滤通知的对象键后缀

events

[]string

启用特定事件类型的通知

返回值

Param

类型

描述

notificationInfo

chan notification.Info

所有通知的读取通道

minio.NotificationInfo

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

Example

// 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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

config

lifecycle.Configuration

要设置的生命周期

返回值

Param

类型

描述

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

config

lifecycle.Configuration

从服务器返回的生命周期

err

错误

标准错误

Example

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

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

config

sse.Configuration

用于设置默认加密配置的结构

返回值

Param

类型

描述

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

config

sse.Configuration

存储默认加密配置的结构

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

err

错误

标准错误

Example

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 要么全部设置,要么全部为空。

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

mode

保留模式

要设置的保留模式

validity

uint

有效期待设定

unit

有效性单位

有效期单位

返回值

Param

类型

描述

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

objectLock

objectLock

锁定启用状态

mode

保留模式

当前保留模式

validity

uint

当前有效期

unit

有效性单位

有效期单位

err

错误

标准错误

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

err

错误

标准错误

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

configuration

minio.BucketVersioningConfiguration

保存版本控制配置的结构

err

错误

标准错误

Example

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

cfg

replication.Config

要设置的复制配置

返回值

Param

类型

描述

err

错误

标准错误

Example

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)

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

replication

replication.Config

从服务器返回的复制配置

err

错误

标准错误

Example

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

RemoveBucketReplication(ctx context.Context, bucketname string) error

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

err

错误

标准错误

Example

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

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

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

参数

Param

类型

描述

ctx

context.Context

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

bucketName

字符串

存储桶的名称

返回值

Param

类型

描述

metrics

replication.Metrics

从服务器返回的复制指标

err

错误

标准错误

Example

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

6. 客户端自定义设置

SetAppInfo(appName, appVersion string)

将自定义应用程序详情添加到 User-Agent。

参数

Param

类型

描述

appName

字符串

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

appVersion

字符串

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

Example

// 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 为 nil,跟踪信息将写入 os.Stdout。

参数

Param

类型

描述

outputStream

io.Writer

HTTP trace 被写入 outputStream。

TraceOff()

禁用 HTTP 跟踪。

SetS3TransferAccelerate(acceleratedEndpoint string)

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

参数

Param

类型

描述

acceleratedEndpoint

字符串

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