MinIO Go 客户端 API 参考
初始化 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
}
}
存储桶操作 |
对象操作 |
预签名操作 |
存储桶策略/通知操作 |
客户端自定义设置 |
---|---|---|---|---|
1. 构造函数
New(endpoint string, opts *Options) (*Client, error)
初始化一个新的客户端对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
string |
S3 兼容的对象存储端点 |
|
minio.Options |
用于构造新客户端的选项 |
minio.Options
字段 |
类型 |
描述 |
---|---|---|
|
*credentials.Credentials |
S3 兼容的对象存储访问凭据 |
|
bool |
如果为“true”,则 API 请求将是安全的 (HTTPS),否则是不安全的 (HTTP) |
|
http.RoundTripper |
用于执行 HTTP 事务的自定义传输 |
|
string |
S3 兼容的对象存储区域 |
|
BucketLookupType |
存储桶查找类型可以是以下值之一 |
minio.BucketLookupDNS |
||
minio.BucketLookupPath |
||
minio.BucketLookupAuto |
2. 存储桶操作
MakeBucket(ctx context.Context, bucketName string, opts MakeBucketOptions)
创建一个新的存储桶。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
minio.MakeBucketOptions |
存储桶选项,例如 |
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)
列出所有存储桶。
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
[]minio.BucketInfo |
所有存储桶的列表 |
minio.BucketInfo
字段 |
类型 |
描述 |
---|---|---|
|
string |
存储桶的名称 |
|
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)
检查存储桶是否存在。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
bool |
指示存储桶是否存在 |
|
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
删除存储桶,存储桶必须为空才能成功删除。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
示例
err = minioClient.RemoveBucket(context.Background(), "mybucket")
if err != nil {
fmt.Println(err)
return
}
ListObjects(ctx context.Context, bucketName string, opts ListObjectsOptions) <-chan ObjectInfo
列出存储桶中的对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
minio.ListObjectsOptions |
列出对象的选项 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
chan minio.ObjectInfo |
存储桶中所有对象的读取通道,对象格式如下: |
minio.ObjectInfo
字段 |
类型 |
描述 |
---|---|---|
|
string |
对象的名称 |
|
int64 |
对象的大小 |
|
string |
对象的 MD5 校验和 |
|
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
列出存储桶中部分上传的对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
部分上传对象的的前缀 |
|
bool |
|
返回值
参数 |
类型 |
描述 |
---|---|---|
|
chan minio.ObjectMultipartInfo |
发射格式如下所示的多部分对象: |
minio.ObjectMultipartInfo
字段 |
类型 |
描述 |
---|---|---|
|
string |
部分上传对象的名称 |
|
string |
部分上传对象的上传 ID |
|
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)
}
RemoveBucketTagging(ctx context.Context, bucketName string) error
删除存储桶上的所有标签。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
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)
返回对象数据的流。大多数常见错误发生在读取流时。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
minio.GetObjectOptions |
用于 GET 请求的选项,指定其他选项,例如加密、If-Match |
minio.GetObjectOptions
字段 |
类型 |
描述 |
---|---|---|
|
encrypt.ServerSide |
由 |
|
minio.AdvancedGetOptions |
此选项用于 MinIO 服务器的内部使用。除非应用程序了解预期用途,否则不应设置此选项。 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
*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
下载并将对象保存为本地文件系统中的文件。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
string |
下载对象的路径 |
|
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( 中的其余选项是可选的。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
io.Reader |
任何实现 io.Reader 的 Go 类型 |
|
minio.PutObjectFanOutRequest |
将在服务器上创建的所有对象的用户信息列表 |
minio.PutObjectFanOutRequest
字段 |
类型 |
描述 |
---|---|---|
|
[]minio.PutObjectFanOutEntyry |
对象扇出条目的列表 |
|
map[string]string |
输入数据的校验和 |
|
_encrypt.ServerSide |
整个扇出的加密设置 |
minio.PutObjectFanOutEntry
字段 |
类型 |
描述 |
---|---|---|
|
string |
对象的名称 |
|
map[string]string |
用户元数据的映射 |
|
map[string]string |
用户对象标签的映射 |
|
string |
对象的 MIME 类型,例如 “application/text” |
|
string |
对象的编码,例如 “gzip” |
|
string |
对象的处理方式,例如 “inline” |
|
string |
对象的语言,例如 “French” |
|
string |
用于指定请求和响应中缓存机制的指令,例如 “max-age=600” |
|
minio.RetentionMode |
要设置的保留模式,例如 “COMPLIANCE” |
|
time.Time |
保留模式生效的日期 |
minio.PutObjectFanOutResponse
字段 |
类型 |
描述 |
---|---|---|
|
string |
对象的名称 |
|
string |
对象的 ETag 不透明唯一值 |
|
string |
上传对象的 VersionID |
|
_time.Time |
最新对象的最后修改时间 |
|
error |
仅当特定对象的扇出失败时才为非 |
PutObject(ctx context.Context, bucketName, objectName string, reader io.Reader, objectSize int64,opts PutObjectOptions) (info UploadInfo, err error)
上传小于 128MiB 的对象,在单个 PUT 操作中完成。对于大小超过 128MiB 的对象,PutObject 会无缝地将对象上传为 128MiB 或更多部分,具体取决于实际文件大小。对象的上传大小上限为 5TB。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
io.Reader |
任何实现 io.Reader 的 Go 类型 |
|
int64 |
正在上传对象的大小。如果流大小未知,则传递 -1(警告:传递 -1 会分配大量内存) |
|
minio.PutObjectOptions |
允许用户设置可选的自定义元数据、内容标头、加密密钥和用于多部分上传操作的线程数量。 |
minio.PutObjectOptions
字段 |
类型 |
描述 |
---|---|---|
|
map[string]string |
用户元数据的映射 |
|
map[string]string |
用户对象标签的映射 |
|
io.Reader |
用于获取上传进度的读取器 |
|
string |
对象的 MIME 类型,例如 “application/text” |
|
string |
对象的编码,例如 “gzip” |
|
string |
对象的处理方式,例如 “inline” |
|
string |
对象的语言,例如 “French” |
|
string |
用于指定请求和响应中缓存机制的指令,例如 “max-age=600” |
|
*minio.RetentionMode |
要设置的保留模式,例如 “COMPLIANCE” |
|
*time.Time |
保留模式生效的日期 |
|
encrypt.ServerSide |
由 |
|
string |
指定对象的存储类别。MinIO 服务器支持的值为 |
|
string |
指定对象的重定向,到同一个存储桶中的另一个对象或到一个外部 URL。 |
|
bool |
指定是否要在 PutObject 操作中发送 |
|
uint64 |
指定用于上传对象的自定义部分大小 |
|
minio.AdvancedPutOptions |
此选项用于 MinIO 服务器的内部使用,除非应用程序了解预期用途,否则不应设置此选项。 |
minio.UploadInfo |
字段 |
类型 |
描述 |
---|---|---|
|
string |
新对象的 ETag |
|
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)
通过对现有对象的服务器端复制来创建或替换对象。它支持条件复制、复制对象的一部分以及目标的服务器端加密和源的解密。有关更多详细信息,请参阅 CopySrcOptions
和 DestinationInfo
类型。
要将多个源对象复制到单个目标对象,请参阅 ComposeObject
API。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
minio.CopyDestOptions |
描述目标对象的参数 |
|
minio.CopySrcOptions |
描述源对象的参数 |
minio.UploadInfo
字段 |
类型 |
描述 |
---|---|---|
|
string |
新对象的 ETag |
|
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)
通过使用服务器端复制将源对象的列表连接起来来创建对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
minio.CopyDestOptions |
包含有关要创建的对象的信息的结构。 |
|
…minio.CopySrcOptions |
包含有关要按顺序连接的源对象的信息的结构切片。 |
minio.UploadInfo
字段 |
类型 |
描述 |
---|---|---|
|
string |
新对象的 ETag |
|
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。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
string |
要上传的文件路径 |
|
minio.PutObjectOptions |
指向结构体的指针,允许用户设置可选的自定义元数据、内容类型、内容编码、内容处置、内容语言和缓存控制头,传递用于加密对象的加密模块,并可选地配置用于多部分 PUT 操作的线程数。 |
minio.UploadInfo
字段 |
类型 |
描述 |
---|---|---|
|
string |
新对象的 ETag |
|
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)
获取对象的元数据。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
minio.StatObjectOptions |
用于 GET 信息/统计请求的选项,指定额外的选项,如加密、If-Match |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
minio.ObjectInfo |
对象统计信息 |
minio.ObjectInfo
字段 |
类型 |
描述 |
---|---|---|
|
time.Time |
对象最后修改的时间 |
|
string |
对象的 MD5 校验和 |
|
string |
对象的 MIME 类型 |
|
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
使用一些指定选项删除对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
minio.RemoveObjectOptions |
允许用户设置选项 |
minio.RemoveObjectOptions
字段 |
类型 |
描述 |
---|---|---|
|
bool |
设置绕过治理头以删除使用 GOVERNANCE 模式锁定的对象 |
|
string |
要删除的对象的版本 ID |
|
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
将对象保留锁应用于对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
minio.PutObjectRetentionOptions |
允许用户设置选项,如保留模式、过期日期和版本 ID |
RemoveObjects(ctx context.Context, bucketName string, objectsCh <-chan ObjectInfo, opts RemoveObjectsOptions) <-chan RemoveObjectError
删除从输入通道获得的对象列表。调用会向服务器发送删除请求,每次最多 1000 个对象。观察到的错误会通过错误通道发送。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
chan minio.ObjectInfo |
要删除的对象通道 |
|
minio.RemoveObjectsOptions |
允许用户设置选项 |
minio.RemoveObjectsOptions
字段 |
类型 |
描述 |
---|---|---|
|
bool |
设置绕过治理头以删除使用 GOVERNANCE 模式锁定的对象 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
<-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)
返回在给定对象上设置的保留。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
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
将法律保留应用于对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
minio.PutObjectLegalHoldOptions |
允许用户设置选项,如状态和版本 ID |
minio.PutObjectLegalHoldOptions
字段 |
类型 |
描述 |
---|---|---|
|
*minio.LegalHoldStatus |
要设置的法律保留状态 |
|
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)
返回给定对象的法律保留状态。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
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
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
context.Context |
请求上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
SelectObjectOptions |
查询选项 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
}
RemoveObjectTagging(ctx context.Context, bucketName, objectName string) error
从给定对象中删除对象标签
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
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 操作
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
string |
对象的版本 ID |
|
_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)
返回对象数据的流。大多数常见错误发生在读取流时。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
minio.ObjectAttributesOptions |
用于分页和选择对象属性的配置 |
minio.ObjectAttributesOptions
字段 |
类型 |
描述 |
---|---|---|
|
encrypt.ServerSide |
由 |
|
_int |
此选项定义 API 应返回多少个部分 |
|
_string |
VersionID 定义将使用对象的哪个版本 |
|
_int |
此选项定义分页将从哪个部分编号开始,部分编号等于 PartNumberMarker 的部分将不会包含在响应中 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
*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
删除部分上传的对象。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
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 秒。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
time.Duration |
预签名 URL 的到期时间(以秒为单位) |
|
url.Values |
其他响应头覆盖支持 response-expires、response-content-type、response-cache-control、response-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。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
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 天。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
对象的名称 |
|
time.Duration |
预签名 URL 的到期时间(以秒为单位) |
|
url.Values |
其他响应头覆盖支持 response-expires、response-content-type、response-cache-control、response-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
设置存储桶或对象前缀的访问权限。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
string |
要设置的策略 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
获取存储桶或前缀的访问权限。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
string |
服务器返回的策略 |
|
error |
标准错误 |
示例
policy, err := minioClient.GetBucketPolicy(context.Background(), "my-bucketname")
if err != nil {
log.Fatalln(err)
}
GetBucketNotification(ctx context.Context, bucketName string) (notification.Configuration, error)
获取存储桶上的通知配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
notification.Configuration |
包含所有通知配置的结构 |
|
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
在存储桶上设置新的存储桶通知。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
notification.Configuration |
表示要发送到配置的 Web 服务的 XML |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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
删除存储桶上配置的所有存储桶通知。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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”指示处理收到的通知时发生的任何错误。
注意:通知通道在第一次出现错误时关闭。
参数
参数 |
类型 |
描述 |
---|---|---|
|
string |
要侦听通知的存储桶 |
|
string |
要过滤通知的对象键前缀 |
|
string |
要过滤通知的对象键后缀 |
|
[]string |
启用特定事件类型的通知 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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”指示处理收到的通知时发生的任何错误。
注意:通知通道在第一次出现错误时关闭。
参数
参数 |
类型 |
描述 |
---|---|---|
|
string |
要侦听通知的存储桶 |
|
string |
要过滤通知的对象键前缀 |
|
string |
要过滤通知的对象键后缀 |
|
[]string |
启用特定事件类型的通知 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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
设置存储桶或对象前缀的生命周期。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
lifecycle.Configuration |
要设置的生命周期 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
获取存储桶或前缀的生命周期。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
lifecycle.Configuration |
服务器返回的生命周期 |
|
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
在存储桶上设置默认加密配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
sse.Configuration |
保存要设置的默认加密配置的结构 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
获取存储桶上设置的默认加密配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
sse.Configuration |
保存默认加密配置的结构 |
|
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)
移除存储桶上设置的默认加密配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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 必须全部设置或全部为空。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
RetentionMode |
要设置的保留模式 |
|
uint |
要设置的有效期 |
|
ValidityUnit |
有效期的单位 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
获取给定存储桶的对象锁定配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
objectLock |
锁定启用状态 |
|
RetentionMode |
当前保留模式 |
|
uint |
当前有效期 |
|
ValidityUnit |
有效期的单位 |
|
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
启用存储桶版本控制支持。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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
禁用存储桶版本控制支持。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
获取存储桶上设置的版本控制配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
minio.BucketVersioningConfiguration |
保存版本控制配置的结构 |
|
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 上定义复制目标来获取角色,以便将源存储桶和目标存储桶与复制端点相关联,以进行复制。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
|
replication.Config |
要设置的复制配置 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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)
获取存储桶上的当前复制配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
replication.Config |
服务器返回的复制配置 |
|
error |
标准错误 |
示例
replication, err := minioClient.GetBucketReplication(context.Background(), "my-bucketname")
if err != nil {
log.Fatalln(err)
}
RemoveBucketReplication(ctx context.Context, bucketname string) error
移除存储桶上的复制配置。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
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 特定的扩展。
参数
参数 |
类型 |
描述 |
---|---|---|
|
context.Context |
用于调用超时/取消的自定义上下文 |
|
string |
存储桶的名称 |
返回值
参数 |
类型 |
描述 |
---|---|---|
|
replication.Metrics |
服务器返回的复制指标 |
|
error |
标准错误 |
示例
replMetrics, err := minioClient.GetBucketReplicationMetrics(context.Background(), "my-bucketname")
if err != nil {
log.Fatalln(err)
}
6. 客户端自定义设置
SetAppInfo(appName, appVersion string)
向 User-Agent 添加自定义应用程序详细信息。
参数
参数 |
类型 |
描述 |
---|---|---|
|
string |
执行 API 请求的应用程序的名称。 |
|
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。
参数
参数 |
类型 |
描述 |
---|---|---|
|
io.Writer |
HTTP 跟踪将写入 outputStream 中。 |
TraceOff()
禁用 HTTP 跟踪。
SetS3TransferAccelerate(acceleratedEndpoint string)
为所有后续 API 请求设置 AWS S3 传输加速端点。注意:此 API 仅适用于 AWS S3,对于 S3 兼容的对象存储服务是无操作的。
参数
参数 |
类型 |
描述 |
---|---|---|
|
string |
设置为新的 S3 传输加速端点。 |