• Minio Go Client API文档
    • 初使化Minio Client对象。
    • Minio
    • AWS S3
    • 1. 构造函数
      • New(endpoint, accessKeyID, secretAccessKey string, ssl bool) (*Client, error)
      • NewWithRegion(endpoint, accessKeyID, secretAccessKey string, ssl bool, region string) (*Client, error)
    • 2. 操作存储桶
      • MakeBucket(bucketName, location string) error
      • ListBuckets() ([]BucketInfo, error)
      • BucketExists(bucketName string) (found bool, err error)
      • RemoveBucket(bucketName string) error
      • ListObjects(bucketName, prefix string, recursive bool, doneCh chan struct{}) <-chan ObjectInfo
      • ListObjectsV2(bucketName, prefix string, recursive bool, doneCh chan struct{}) <-chan ObjectInfo
      • ListIncompleteUploads(bucketName, prefix string, recursive bool, doneCh chan struct{}) <- chan ObjectMultipartInfo
    • 3. 操作对象
      • GetObject(bucketName, objectName string, opts GetObjectOptions) (*Object, error)
      • FGetObject(bucketName, objectName, filePath string, opts GetObjectOptions) error
      • GetObjectWithContext(ctx context.Context, bucketName, objectName string, opts GetObjectOptions) (*Object, error)
      • FGetObjectWithContext(ctx context.Context, bucketName, objectName, filePath string, opts GetObjectOptions) error
      • FGetEncryptedObject(bucketName, objectName, filePath string, materials encrypt.Materials) error
      • PutObject(bucketName, objectName string, reader io.Reader, objectSize int64,opts PutObjectOptions) (n int, err error)
      • PutObjectWithContext(ctx context.Context, bucketName, objectName string, reader io.Reader, objectSize int64, opts PutObjectOptions) (n int, err error)
      • CopyObject(dst DestinationInfo, src SourceInfo) error
      • ComposeObject(dst minio.DestinationInfo, srcs []minio.SourceInfo) error
      • NewSourceInfo(bucket, object string, decryptSSEC *SSEInfo) SourceInfo
      • NewDestinationInfo(bucket, object string, encryptSSEC *SSEInfo, userMeta map[string]string) (DestinationInfo, error)
      • FPutObject(bucketName, objectName, filePath, opts PutObjectOptions) (length int64, err error)
      • FPutObjectWithContext(ctx context.Context, bucketName, objectName, filePath, opts PutObjectOptions) (length int64, err error)
      • StatObject(bucketName, objectName string, opts StatObjectOptions) (ObjectInfo, error)
      • RemoveObject(bucketName, objectName string) error
      • RemoveObjects(bucketName string, objectsCh chan string) (errorCh <-chan RemoveObjectError)
      • RemoveIncompleteUpload(bucketName, objectName string) error
    • 4. 操作加密对象
      • NewSymmetricKey(key []byte) *encrypt.SymmetricKey
      • NewAsymmetricKey(privateKey []byte, publicKey[]byte) (*encrypt.AsymmetricKey, error)
      • GetEncryptedObject(bucketName, objectName string, encryptMaterials encrypt.Materials) (io.ReadCloser, error)
      • PutEncryptedObject(bucketName, objectName string, reader io.Reader, encryptMaterials encrypt.Materials) (n int, err error)
      • FPutEncryptedObject(bucketName, objectName, filePath, encryptMaterials encrypt.Materials) (n int, err error)
      • NewSSEInfo(key []byte, algo string) SSEInfo
    • 5. Presigned操作
      • PresignedGetObject(bucketName, objectName string, expiry time.Duration, reqParams url.Values) (*url.URL, error)
      • PresignedPutObject(bucketName, objectName string, expiry time.Duration) (*url.URL, error)
      • PresignedHeadObject(bucketName, objectName string, expiry time.Duration, reqParams url.Values) (*url.URL, error)
      • PresignedPostPolicy(PostPolicy) (*url.URL, map[string]string, error)
    • 6. 存储桶策略/通知
      • SetBucketPolicy(bucketname, objectPrefix string, policy policy.BucketPolicy) error
      • GetBucketPolicy(bucketName, objectPrefix string) (policy.BucketPolicy, error)
      • GetBucketNotification(bucketName string) (BucketNotification, error)
      • SetBucketNotification(bucketName string, bucketNotification BucketNotification) error
      • RemoveAllBucketNotification(bucketName string) error
      • ListenBucketNotification(bucketName, prefix, suffix string, events []string, doneCh <-chan struct{}) <-chan NotificationInfo
    • 7. 客户端自定义设置
      • SetAppInfo(appName, appVersion string)
      • SetCustomTransport(customHTTPTransport http.RoundTripper)
      • TraceOn(outputStream io.Writer)
      • TraceOff()
      • SetS3TransferAccelerate(acceleratedEndpoint string)
    • 8. 了解更多

    Minio Go Client API文档

    初使化Minio Client对象。

    Minio

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/minio/minio-go"
    5. )
    6. func main() {
    7. // 使用ssl
    8. ssl := true
    9. // 初使化minio client对象。
    10. minioClient, err := minio.New("play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", ssl)
    11. if err != nil {
    12. fmt.Println(err)
    13. return
    14. }
    15. }

    AWS S3

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/minio/minio-go"
    5. )
    6. func main() {
    7. // 使用ssl
    8. ssl := true
    9. // 初使化minio client对象。
    10. s3Client, err := minio.New("s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ssl)
    11. if err != nil {
    12. fmt.Println(err)
    13. return
    14. }
    15. }
    操作存储桶 操作对象 操作加密对象 Presigned操作 存储桶策略/通知 客户端自定义设置
    MakeBucket GetObject NewSymmetricKey PresignedGetObject SetBucketPolicy SetAppInfo
    ListBuckets PutObject NewAsymmetricKey PresignedPutObject GetBucketPolicy SetCustomTransport
    BucketExists CopyObject GetEncryptedObject PresignedPostPolicy SetBucketNotification TraceOn
    RemoveBucket StatObject PutEncryptedObject GetBucketNotification TraceOff
    ListObjects RemoveObject NewSSEInfo RemoveAllBucketNotification SetS3TransferAccelerate
    ListObjectsV2 RemoveObjects FPutEncryptedObject ListenBucketNotification
    ListIncompleteUploads RemoveIncompleteUpload
    FPutObject
    FGetObject
    ComposeObject
    NewSourceInfo
    NewDestinationInfo
    PutObjectWithContext
    GetObjectWithContext
    FPutObjectWithContext
    FGetObjectWithContext

    1. 构造函数

    New(endpoint, accessKeyID, secretAccessKey string, ssl bool) (*Client, error)

    初使化一个新的client对象。

    参数

    参数 类型 描述
    endpoint string S3兼容对象存储服务endpoint
    accessKeyID string 对象存储的Access key
    secretAccessKey string 对象存储的Secret key
    ssl bool true代表使用HTTPS

    NewWithRegion(endpoint, accessKeyID, secretAccessKey string, ssl bool, region string) (*Client, error)

    初使化minio client,带有region配置。和New()不同的是,NewWithRegion避免了bucket-location操作,所以会快那么一丢丢。如果你的应用只使用一个region的话可以用这个方法。

    参数

    参数 类型 描述
    endpoint string S3兼容对象存储服务endpoint
    accessKeyID string 对象存储的Access key
    secretAccessKey string 对象存储的Secret key
    ssl bool true代表使用HTTPS
    region string 对象存储的region

    2. 操作存储桶

    MakeBucket(bucketName, location string) error

    创建一个存储桶。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    location string 存储桶被创建的region(地区),默认是us-east-1(美国东一区),下面列举的是其它合法的值。注意:如果用的是minio服务的话,resion是在它的配置文件中,(默认是us-east-1)。
    us-east-1
    us-west-1
    us-west-2
    eu-west-1
    eu-central-1
    ap-southeast-1
    ap-northeast-1
    ap-southeast-2
    sa-east-1

    示例

    1. err = minioClient.MakeBucket("mybucket", "us-east-1")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. fmt.Println("Successfully created mybucket.")

    ListBuckets() ([]BucketInfo, error)

    列出所有的存储桶。

    参数 类型 描述
    bucketList []minio.BucketInfo 所有存储桶的list。

    minio.BucketInfo

    参数 类型 描述
    bucket.Name string 存储桶名称
    bucket.CreationDate time.Time 存储桶的创建时间

    示例

    1. buckets, err := minioClient.ListBuckets()
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. for _, bucket := range buckets {
    7. fmt.Println(bucket)
    8. }

    BucketExists(bucketName string) (found bool, err error)

    检查存储桶是否存在。

    参数

    参数 类型 描述
    bucketName string 存储桶名称

    返回值

    参数 类型 描述
    found bool 存储桶是否存在
    err error 标准Error

    示例

    1. found, err := minioClient.BucketExists("mybucket")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. if found {
    7. fmt.Println("Bucket found")
    8. }

    RemoveBucket(bucketName string) error

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

    参数

    参数 类型 描述
    bucketName string 存储桶名称

    示例

    1. err = minioClient.RemoveBucket("mybucket")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }

    ListObjects(bucketName, prefix string, recursive bool, doneCh chan struct{}) <-chan ObjectInfo

    列举存储桶里的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectPrefix string 要列举的对象前缀
    recursive bool true代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
    doneCh chan struct{} 在该channel上结束ListObjects iterator的一个message。

    返回值

    参数 类型 描述
    objectInfo chan minio.ObjectInfo 存储桶中所有对象的read channel,对象的格式如下:

    minio.ObjectInfo

    属性 类型 描述
    objectInfo.Key string 对象的名称
    objectInfo.Size int64 对象的大小
    objectInfo.ETag string 对象的MD5校验码
    objectInfo.LastModified time.Time 对象的最后修改时间
    1. // Create a done channel to control 'ListObjects' go routine.
    2. doneCh := make(chan struct{})
    3. // Indicate to our routine to exit cleanly upon return.
    4. defer close(doneCh)
    5. isRecursive := true
    6. objectCh := minioClient.ListObjects("mybucket", "myprefix", isRecursive, doneCh)
    7. for object := range objectCh {
    8. if object.Err != nil {
    9. fmt.Println(object.Err)
    10. return
    11. }
    12. fmt.Println(object)
    13. }

    ListObjectsV2(bucketName, prefix string, recursive bool, doneCh chan struct{}) <-chan ObjectInfo

    使用listing API v2版本列举存储桶中的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectPrefix string 要列举的对象前缀
    recursive bool true代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
    doneCh chan struct{} 在该channel上结束ListObjects iterator的一个message。

    返回值

    参数 类型 描述
    objectInfo chan minio.ObjectInfo 存储桶中所有对象的read channel
    1. // Create a done channel to control 'ListObjectsV2' go routine.
    2. doneCh := make(chan struct{})
    3. // Indicate to our routine to exit cleanly upon return.
    4. defer close(doneCh)
    5. isRecursive := true
    6. objectCh := minioClient.ListObjectsV2("mybucket", "myprefix", isRecursive, doneCh)
    7. for object := range objectCh {
    8. if object.Err != nil {
    9. fmt.Println(object.Err)
    10. return
    11. }
    12. fmt.Println(object)
    13. }

    ListIncompleteUploads(bucketName, prefix string, recursive bool, doneCh chan struct{}) <- chan ObjectMultipartInfo

    列举存储桶中未完整上传的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    prefix string 不完整上传的对象的前缀
    recursive bool true代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
    doneCh chan struct{} 在该channel上结束ListIncompleteUploads iterator的一个message。

    返回值

    参数 类型 描述
    multiPartInfo chan minio.ObjectMultipartInfo multipart对象格式如下:

    minio.ObjectMultipartInfo

    属性 类型 描述
    multiPartObjInfo.Key string 未完整上传的对象的名称
    multiPartObjInfo.UploadID string 未完整上传的对象的Upload ID
    multiPartObjInfo.Size int64 未完整上传的对象的大小

    示例

    1. // Create a done channel to control 'ListObjects' go routine.
    2. doneCh := make(chan struct{})
    3. // Indicate to our routine to exit cleanly upon return.
    4. defer close(doneCh)
    5. isRecursive := true // Recursively list everything at 'myprefix'
    6. multiPartObjectCh := minioClient.ListIncompleteUploads("mybucket", "myprefix", isRecursive, doneCh)
    7. for multiPartObject := range multiPartObjectCh {
    8. if multiPartObject.Err != nil {
    9. fmt.Println(multiPartObject.Err)
    10. return
    11. }
    12. fmt.Println(multiPartObject)
    13. }

    3. 操作对象

    GetObject(bucketName, objectName string, opts GetObjectOptions) (*Object, error)

    返回对象数据的流,error是读流时经常抛的那些错。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    opts minio.GetObjectOptions GET请求的一些额外参数,像encryption,If-Match

    minio.GetObjectOptions

    参数 类型 描述
    opts.Materials encrypt.Materials encrypt包提供的对流加密的接口,(更多信息,请看https://godoc.org/github.com/minio/minio-go)

    返回值

    参数 类型 描述
    object *minio.Object minio.Object代表了一个object reader。它实现了io.Reader, io.Seeker, io.ReaderAt and io.Closer接口。

    示例

    1. object, err := minioClient.GetObject("mybucket", "myobject", minio.GetObjectOptions{})
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. localFile, err := os.Create("/tmp/local-file.jpg")
    7. if err != nil {
    8. fmt.Println(err)
    9. return
    10. }
    11. if _, err = io.Copy(localFile, object); err != nil {
    12. fmt.Println(err)
    13. return
    14. }

    FGetObject(bucketName, objectName, filePath string, opts GetObjectOptions) error

    下载并将文件保存到本地文件系统。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    filePath string 下载后保存的路径
    opts minio.GetObjectOptions GET请求的一些额外参数,像encryption,If-Match

    示例

    1. err = minioClient.FGetObject("mybucket", "myobject", "/tmp/myobject", minio.GetObjectOptions{})
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }

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

    和GetObject操作是一样的,不过传入了取消请求的context。

    参数

    参数 类型 描述
    ctx context.Context 请求上下文(Request context)
    bucketName string 存储桶名称
    objectName string 对象的名称
    opts minio.GetObjectOptions GET请求的一些额外参数,像encryption,If-Match

    返回值

    参数 类型 描述
    object *minio.Object minio.Object代表了一个object reader。它实现了io.Reader, io.Seeker, io.ReaderAt and io.Closer接口。

    示例

    1. ctx, cancel := context.WithTimeout(context.Background(), 100 * time.Second)
    2. defer cancel()
    3. object, err := minioClient.GetObjectWithContext(ctx, "mybucket", "myobject", minio.GetObjectOptions{})
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }
    8. localFile, err := os.Create("/tmp/local-file.jpg")
    9. if err != nil {
    10. fmt.Println(err)
    11. return
    12. }
    13. if _, err = io.Copy(localFile, object); err != nil {
    14. fmt.Println(err)
    15. return
    16. }

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

    和FGetObject操作是一样的,不过允许取消请求。

    参数

    参数 类型 描述
    ctx context.Context 请求上下文
    bucketName string 存储桶名称
    objectName string 对象的名称
    filePath string 下载后保存的路径
    opts minio.GetObjectOptions GET请求的一些额外参数,像encryption,If-Match

    示例

    1. ctx, cancel := context.WithTimeout(context.Background(), 100 * time.Second)
    2. defer cancel()
    3. err = minioClient.FGetObjectWithContext(ctx, "mybucket", "myobject", "/tmp/myobject", minio.GetObjectOptions{})
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }

    FGetEncryptedObject(bucketName, objectName, filePath string, materials encrypt.Materials) error

    和FGetObject操作是一样的,不过会对加密请求进行解密。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    filePath string 下载后保存的路径
    materials encrypt.Materials encrypt包提供的对流加密的接口,(更多信息,请看https://godoc.org/github.com/minio/minio-go)

    示例

    1. // Generate a master symmetric key
    2. key := encrypt.NewSymmetricKey([]byte("my-secret-key-00"))
    3. // Build the CBC encryption material
    4. cbcMaterials, err := encrypt.NewCBCSecureMaterials(key)
    5. if err != nil {
    6. fmt.Println(err)
    7. return
    8. }
    9. err = minioClient.FGetEncryptedObject("mybucket", "myobject", "/tmp/myobject", cbcMaterials)
    10. if err != nil {
    11. fmt.Println(err)
    12. return
    13. }

    PutObject(bucketName, objectName string, reader io.Reader, objectSize int64,opts PutObjectOptions) (n int, err error)

    当对象小于64MiB时,直接在一次PUT请求里进行上传。当大于64MiB时,根据文件的实际大小,PutObject会自动地将对象进行拆分成64MiB一块或更大一些进行上传。对象的最大大小是5TB。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    reader io.Reader 任意实现了io.Reader的GO类型
    objectSize int64 上传的对象的大小,-1代表未知。
    opts minio.PutObjectOptions 允许用户设置可选的自定义元数据,内容标题,加密密钥和用于分段上传操作的线程数量。

    minio.PutObjectOptions

    属性 类型 描述
    opts.UserMetadata map[string]string 用户元数据的Map
    opts.Progress io.Reader 获取上传进度的Reader
    opts.ContentType string 对象的Content type, 例如"application/text"
    opts.ContentEncoding string 对象的Content encoding,例如"gzip"
    opts.ContentDisposition string 对象的Content disposition, "inline"
    opts.CacheControl string 指定针对请求和响应的缓存机制,例如"max-age=600"
    opts.EncryptMaterials encrypt.Materials encrypt包提供的对流加密的接口,(更多信息,请看https://godoc.org/github.com/minio/minio-go)

    示例

    1. file, err := os.Open("my-testfile")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. defer file.Close()
    7. fileStat, err := file.Stat()
    8. if err != nil {
    9. fmt.Println(err)
    10. return
    11. }
    12. n, err := minioClient.PutObject("mybucket", "myobject", file, fileStat.Size(), minio.PutObjectOptions{ContentType:"application/octet-stream"})
    13. if err != nil {
    14. fmt.Println(err)
    15. return
    16. }
    17. fmt.Println("Successfully uploaded bytes: ", n)

    API方法在minio-go SDK版本v3.0.3中提供的PutObjectWithSize,PutObjectWithMetadata,PutObjectStreaming和PutObjectWithProgress被替换为接受指向PutObjectOptions struct的指针的新的PutObject调用变体。

    PutObjectWithContext(ctx context.Context, bucketName, objectName string, reader io.Reader, objectSize int64, opts PutObjectOptions) (n int, err error)

    和PutObject是一样的,不过允许取消请求。

    参数

    参数 类型 描述
    ctx context.Context 请求上下文
    bucketName string 存储桶名称
    objectName string 对象的名称
    reader io.Reader 任何实现io.Reader的Go类型
    objectSize int64 上传的对象的大小,-1代表未知
    opts minio.PutObjectOptions 允许用户设置可选的自定义元数据,content-type,content-encoding,content-disposition以及cache-control headers,传递加密模块以加密对象,并可选地设置multipart put操作的线程数量。

    示例

    1. ctx, cancel := context.WithTimeout(context.Background(), 10 * time.Second)
    2. defer cancel()
    3. file, err := os.Open("my-testfile")
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }
    8. defer file.Close()
    9. fileStat, err := file.Stat()
    10. if err != nil {
    11. fmt.Println(err)
    12. return
    13. }
    14. n, err := minioClient.PutObjectWithContext(ctx, "my-bucketname", "my-objectname", file, fileStat.Size(), minio.PutObjectOptions{
    15. ContentType: "application/octet-stream",
    16. })
    17. if err != nil {
    18. fmt.Println(err)
    19. return
    20. }
    21. fmt.Println("Successfully uploaded bytes: ", n)

    CopyObject(dst DestinationInfo, src SourceInfo) error

    通过在服务端对已存在的对象进行拷贝,实现新建或者替换对象。它支持有条件的拷贝,拷贝对象的一部分,以及在服务端的加解密。请查看SourceInfoDestinationInfo两个类型来了解更多细节。

    拷贝多个源文件到一个目标对象,请查看ComposeObject API。

    参数

    参数 类型 描述
    dst minio.DestinationInfo 目标对象
    src minio.SourceInfo 源对象

    示例

    1. // Use-case 1: Simple copy object with no conditions.
    2. // Source object
    3. src := minio.NewSourceInfo("my-sourcebucketname", "my-sourceobjectname", nil)
    4. // Destination object
    5. dst, err := minio.NewDestinationInfo("my-bucketname", "my-objectname", nil, nil)
    6. if err != nil {
    7. fmt.Println(err)
    8. return
    9. }
    10. // Copy object call
    11. err = minioClient.CopyObject(dst, src)
    12. if err != nil {
    13. fmt.Println(err)
    14. return
    15. }
    1. // Use-case 2:
    2. // Copy object with copy-conditions, and copying only part of the source object.
    3. // 1. that matches a given ETag
    4. // 2. and modified after 1st April 2014
    5. // 3. but unmodified since 23rd April 2014
    6. // 4. copy only first 1MiB of object.
    7. // Source object
    8. src := minio.NewSourceInfo("my-sourcebucketname", "my-sourceobjectname", nil)
    9. // Set matching ETag condition, copy object which matches the following ETag.
    10. src.SetMatchETagCond("31624deb84149d2f8ef9c385918b653a")
    11. // Set modified condition, copy object modified since 2014 April 1.
    12. src.SetModifiedSinceCond(time.Date(2014, time.April, 1, 0, 0, 0, 0, time.UTC))
    13. // Set unmodified condition, copy object unmodified since 2014 April 23.
    14. src.SetUnmodifiedSinceCond(time.Date(2014, time.April, 23, 0, 0, 0, 0, time.UTC))
    15. // Set copy-range of only first 1MiB of file.
    16. src.SetRange(0, 1024*1024-1)
    17. // Destination object
    18. dst, err := minio.NewDestinationInfo("my-bucketname", "my-objectname", nil, nil)
    19. if err != nil {
    20. fmt.Println(err)
    21. return
    22. }
    23. // Copy object call
    24. err = minioClient.CopyObject(dst, src)
    25. if err != nil {
    26. fmt.Println(err)
    27. return
    28. }

    ComposeObject(dst minio.DestinationInfo, srcs []minio.SourceInfo) error

    通过使用服务端拷贝实现钭多个源对象合并创建成一个新的对象。

    参数

    参数 类型 描述
    dst minio.DestinationInfo 要被创建的目标对象
    srcs []minio.SourceInfo 要合并的多个源对象

    示例

    1. // Prepare source decryption key (here we assume same key to
    2. // decrypt all source objects.)
    3. decKey := minio.NewSSEInfo([]byte{1, 2, 3}, "")
    4. // Source objects to concatenate. We also specify decryption
    5. // key for each
    6. src1 := minio.NewSourceInfo("bucket1", "object1", &decKey)
    7. src1.SetMatchETagCond("31624deb84149d2f8ef9c385918b653a")
    8. src2 := minio.NewSourceInfo("bucket2", "object2", &decKey)
    9. src2.SetMatchETagCond("f8ef9c385918b653a31624deb84149d2")
    10. src3 := minio.NewSourceInfo("bucket3", "object3", &decKey)
    11. src3.SetMatchETagCond("5918b653a31624deb84149d2f8ef9c38")
    12. // Create slice of sources.
    13. srcs := []minio.SourceInfo{src1, src2, src3}
    14. // Prepare destination encryption key
    15. encKey := minio.NewSSEInfo([]byte{8, 9, 0}, "")
    16. // Create destination info
    17. dst, err := minio.NewDestinationInfo("bucket", "object", &encKey, nil)
    18. if err != nil {
    19. fmt.Println(err)
    20. return
    21. }
    22. // Compose object call by concatenating multiple source files.
    23. err = minioClient.ComposeObject(dst, srcs)
    24. if err != nil {
    25. fmt.Println(err)
    26. return
    27. }
    28. fmt.Println("Composed object successfully.")

    NewSourceInfo(bucket, object string, decryptSSEC *SSEInfo) SourceInfo

    构建一个可用于服务端拷贝操作(像CopyObjectComposeObject)的SourceInfo对象。该对象可用于给源对象设置拷贝条件。

    参数

    参数 类型 描述
    bucket string 源存储桶
    object string 源对象
    decryptSSEC *minio.SSEInfo 源对象的解密信息 (nil代表不用解密)

    示例

    1. // No decryption parameter.
    2. src := minio.NewSourceInfo("bucket", "object", nil)
    3. // Destination object
    4. dst, err := minio.NewDestinationInfo("my-bucketname", "my-objectname", nil, nil)
    5. if err != nil {
    6. fmt.Println(err)
    7. return
    8. }
    9. // Copy object call
    10. err = minioClient.CopyObject(dst, src)
    11. if err != nil {
    12. fmt.Println(err)
    13. return
    14. }
    1. // With decryption parameter.
    2. decKey := minio.NewSSEInfo([]byte{1,2,3}, "")
    3. src := minio.NewSourceInfo("bucket", "object", &decKey)
    4. // Destination object
    5. dst, err := minio.NewDestinationInfo("my-bucketname", "my-objectname", nil, nil)
    6. if err != nil {
    7. fmt.Println(err)
    8. return
    9. }
    10. // Copy object call
    11. err = minioClient.CopyObject(dst, src)
    12. if err != nil {
    13. fmt.Println(err)
    14. return
    15. }

    NewDestinationInfo(bucket, object string, encryptSSEC *SSEInfo, userMeta map[string]string) (DestinationInfo, error)

    构建一个用于服务端拷贝操作(像CopyObjectComposeObject)的用作目标对象的DestinationInfo

    参数

    参数 类型 描述
    bucket string 目标存储桶名称
    object string 目标对象名称
    encryptSSEC *minio.SSEInfo 源对象的加密信息 (nil代表不用加密)
    userMeta map[string]string 给目标对象的用户元数据,如果是nil,并只有一个源对象,则将源对象的用户元数据拷贝给目标对象。

    示例

    1. // No encryption parameter.
    2. src := minio.NewSourceInfo("bucket", "object", nil)
    3. dst, err := minio.NewDestinationInfo("bucket", "object", nil, nil)
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }
    8. // Copy object call
    9. err = minioClient.CopyObject(dst, src)
    10. if err != nil {
    11. fmt.Println(err)
    12. return
    13. }
    1. src := minio.NewSourceInfo("bucket", "object", nil)
    2. // With encryption parameter.
    3. encKey := minio.NewSSEInfo([]byte{1,2,3}, "")
    4. dst, err := minio.NewDestinationInfo("bucket", "object", &encKey, nil)
    5. if err != nil {
    6. fmt.Println(err)
    7. return
    8. }
    9. // Copy object call
    10. err = minioClient.CopyObject(dst, src)
    11. if err != nil {
    12. fmt.Println(err)
    13. return
    14. }

    FPutObject(bucketName, objectName, filePath, opts PutObjectOptions) (length int64, err error)

    将filePath对应的文件内容上传到一个对象中。

    当对象小于64MiB时,FPutObject直接在一次PUT请求里进行上传。当大于64MiB时,根据文件的实际大小,FPutObject会自动地将对象进行拆分成64MiB一块或更大一些进行上传。对象的最大大小是5TB。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    filePath string 要上传的文件的路径
    opts minio.PutObjectOptions 允许用户设置可选的自定义元数据,content-type,content-encoding,content-disposition以及cache-control headers,传递加密模块以加密对象,并可选地设置multipart put操作的线程数量。

    示例

    1. n, err := minioClient.FPutObject("my-bucketname", "my-objectname", "my-filename.csv", minio.PutObjectOptions{
    2. ContentType: "application/csv",
    3. });
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }
    8. fmt.Println("Successfully uploaded bytes: ", n)

    FPutObjectWithContext(ctx context.Context, bucketName, objectName, filePath, opts PutObjectOptions) (length int64, err error)

    和FPutObject操作是一样的,不过允许取消请求。

    参数

    参数 类型 描述
    ctx context.Context 请求上下文
    bucketName string 存储桶名称
    objectName string 对象的名称
    filePath string 要上传的文件的路径
    opts minio.PutObjectOptions 允许用户设置可选的自定义元数据,content-type,content-encoding,content-disposition以及cache-control headers,传递加密模块以加密对象,并可选地设置multipart put操作的线程数量。

    示例

    1. ctx, cancel := context.WithTimeout(context.Background(), 100 * time.Second)
    2. defer cancel()
    3. n, err := minioClient.FPutObjectWithContext(ctx, "mybucket", "myobject.csv", "/tmp/otherobject.csv", minio.PutObjectOptions{ContentType:"application/csv"})
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }
    8. fmt.Println("Successfully uploaded bytes: ", n)

    StatObject(bucketName, objectName string, opts StatObjectOptions) (ObjectInfo, error)

    获取对象的元数据。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    opts minio.StatObjectOptions GET info/stat请求的一些额外参数,像encryption,If-Match

    返回值

    参数 类型 描述
    objInfo minio.ObjectInfo 对象stat信息

    minio.ObjectInfo

    属性 类型 描述
    objInfo.LastModified time.Time 对象的最后修改时间
    objInfo.ETag string 对象的MD5校验码
    objInfo.ContentType string 对象的Content type
    objInfo.Size int64 对象的大小

    示例

    1. objInfo, err := minioClient.StatObject("mybucket", "myobject", minio.StatObjectOptions{})
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. fmt.Println(objInfo)

    RemoveObject(bucketName, objectName string) error

    删除一个对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    1. err = minioClient.RemoveObject("mybucket", "myobject")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }

    RemoveObjects(bucketName string, objectsCh chan string) (errorCh <-chan RemoveObjectError)

    从一个input channel里删除一个对象集合。一次发送到服务端的删除请求最多可删除1000个对象。通过error channel返回的错误信息。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectsCh chan string 要删除的对象的channel

    返回值

    参数 类型 描述
    errorCh <-chan minio.RemoveObjectError 删除时观察到的错误的Receive-only channel。
    1. objectsCh := make(chan string)
    2. // Send object names that are needed to be removed to objectsCh
    3. go func() {
    4. defer close(objectsCh)
    5. // List all objects from a bucket-name with a matching prefix.
    6. for object := range minioClient.ListObjects("my-bucketname", "my-prefixname", true, nil) {
    7. if object.Err != nil {
    8. log.Fatalln(object.Err)
    9. }
    10. objectsCh <- object.Key
    11. }
    12. }()
    13. for rErr := range minioClient.RemoveObjects("mybucket", objectsCh) {
    14. fmt.Println("Error detected during deletion: ", rErr)
    15. }

    RemoveIncompleteUpload(bucketName, objectName string) error

    删除一个未完整上传的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称

    示例

    1. err = minioClient.RemoveIncompleteUpload("mybucket", "myobject")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }

    4. 操作加密对象

    NewSymmetricKey(key []byte) *encrypt.SymmetricKey

    参数

    参数 类型 描述
    key string 存储桶名称

    返回值

    参数 类型 描述
    symmetricKey *encrypt.SymmetricKey 加密解密的对称秘钥
    1. symKey := encrypt.NewSymmetricKey([]byte("my-secret-key-00"))
    2. // Build the CBC encryption material with symmetric key.
    3. cbcMaterials, err := encrypt.NewCBCSecureMaterials(symKey)
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }
    8. fmt.Println("Successfully initialized Symmetric key CBC materials", cbcMaterials)
    9. object, err := minioClient.GetEncryptedObject("mybucket", "myobject", cbcMaterials)
    10. if err != nil {
    11. fmt.Println(err)
    12. return
    13. }
    14. defer object.Close()

    NewAsymmetricKey(privateKey []byte, publicKey[]byte) (*encrypt.AsymmetricKey, error)

    参数

    参数 类型 描述
    privateKey []byte Private key数据
    publicKey []byte Public key数据

    返回值

    参数 类型 描述
    asymmetricKey *encrypt.AsymmetricKey 加密解密的非对称秘钥
    err error 标准Error
    1. privateKey, err := ioutil.ReadFile("private.key")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. publicKey, err := ioutil.ReadFile("public.key")
    7. if err != nil {
    8. fmt.Println(err)
    9. return
    10. }
    11. // Initialize the asymmetric key
    12. asymmetricKey, err := encrypt.NewAsymmetricKey(privateKey, publicKey)
    13. if err != nil {
    14. fmt.Println(err)
    15. return
    16. }
    17. // Build the CBC encryption material for asymmetric key.
    18. cbcMaterials, err := encrypt.NewCBCSecureMaterials(asymmetricKey)
    19. if err != nil {
    20. fmt.Println(err)
    21. return
    22. }
    23. fmt.Println("Successfully initialized Asymmetric key CBC materials", cbcMaterials)
    24. object, err := minioClient.GetEncryptedObject("mybucket", "myobject", cbcMaterials)
    25. if err != nil {
    26. fmt.Println(err)
    27. return
    28. }
    29. defer object.Close()

    GetEncryptedObject(bucketName, objectName string, encryptMaterials encrypt.Materials) (io.ReadCloser, error)

    返回对象的解密流。读流时的常见错误。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    encryptMaterials encrypt.Materials encrypt包提供的对流加密的接口,(更多信息,请看https://godoc.org/github.com/minio/minio-go)

    返回值

    参数 类型 描述
    stream io.ReadCloser 返回对象的reader,调用者需要在读取之后进行关闭。
    err _error 错误信息

    示例

    1. // Generate a master symmetric key
    2. key := encrypt.NewSymmetricKey([]byte("my-secret-key-00"))
    3. // Build the CBC encryption material
    4. cbcMaterials, err := encrypt.NewCBCSecureMaterials(key)
    5. if err != nil {
    6. fmt.Println(err)
    7. return
    8. }
    9. object, err := minioClient.GetEncryptedObject("mybucket", "myobject", cbcMaterials)
    10. if err != nil {
    11. fmt.Println(err)
    12. return
    13. }
    14. defer object.Close()
    15. localFile, err := os.Create("/tmp/local-file.jpg")
    16. if err != nil {
    17. fmt.Println(err)
    18. return
    19. }
    20. defer localFile.Close()
    21. if _, err = io.Copy(localFile, object); err != nil {
    22. fmt.Println(err)
    23. return
    24. }

    PutEncryptedObject(bucketName, objectName string, reader io.Reader, encryptMaterials encrypt.Materials) (n int, err error)

    加密并上传对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    reader io.Reader 任何实现io.Reader的Go类型
    encryptMaterials encrypt.Materials encrypt包提供的对流加密的接口,(更多信息,请看https://godoc.org/github.com/minio/minio-go)

    示例

    1. // Load a private key
    2. privateKey, err := ioutil.ReadFile("private.key")
    3. if err != nil {
    4. fmt.Println(err)
    5. return
    6. }
    7. // Load a public key
    8. publicKey, err := ioutil.ReadFile("public.key")
    9. if err != nil {
    10. fmt.Println(err)
    11. return
    12. }
    13. // Build an asymmetric key
    14. key, err := encrypt.NewAsymmetricKey(privateKey, publicKey)
    15. if err != nil {
    16. fmt.Println(err)
    17. return
    18. }
    19. // Build the CBC encryption module
    20. cbcMaterials, err := encrypt.NewCBCSecureMaterials(key)
    21. if err != nil {
    22. fmt.Println(err)
    23. return
    24. }
    25. // Open a file to upload
    26. file, err := os.Open("my-testfile")
    27. if err != nil {
    28. fmt.Println(err)
    29. return
    30. }
    31. defer file.Close()
    32. // Upload the encrypted form of the file
    33. n, err := minioClient.PutEncryptedObject("mybucket", "myobject", file, cbcMaterials)
    34. if err != nil {
    35. fmt.Println(err)
    36. return
    37. }
    38. fmt.Println("Successfully uploaded encrypted bytes: ", n)

    FPutEncryptedObject(bucketName, objectName, filePath, encryptMaterials encrypt.Materials) (n int, err error)

    通过一个文件进行加密并上传到对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    filePath string 要上传的文件的路径
    encryptMaterials encrypt.Materials encrypt包提供的对流加密的接口,(更多信息,请看https://godoc.org/github.com/minio/minio-go)

    示例

    1. // Load a private key
    2. privateKey, err := ioutil.ReadFile("private.key")
    3. if err != nil {
    4. fmt.Println(err)
    5. return
    6. }
    7. // Load a public key
    8. publicKey, err := ioutil.ReadFile("public.key")
    9. if err != nil {
    10. fmt.Println(err)
    11. return
    12. }
    13. // Build an asymmetric key
    14. key, err := encrypt.NewAsymmetricKey(privateKey, publicKey)
    15. if err != nil {
    16. fmt.Println(err)
    17. return
    18. }
    19. // Build the CBC encryption module
    20. cbcMaterials, err := encrypt.NewCBCSecureMaterials(key)
    21. if err != nil {
    22. fmt.Println(err)
    23. return
    24. }
    25. n, err := minioClient.FPutEncryptedObject("mybucket", "myobject.csv", "/tmp/otherobject.csv", cbcMaterials)
    26. if err != nil {
    27. fmt.Println(err)
    28. return
    29. }
    30. fmt.Println("Successfully uploaded encrypted bytes: ", n)

    NewSSEInfo(key []byte, algo string) SSEInfo

    创建一个通过用户提供的key(SSE-C),进行服务端加解密操作的key对象。

    参数

    参数 类型 描述
    key []byte 未编码的二进制key数组
    algo string 加密算法,可以为空(默认是AES256

    5. Presigned操作

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

    生成一个用于HTTP GET操作的presigned URL。浏览器/移动客户端可以在即使存储桶为私有的情况下也可以通过这个URL进行下载。这个presigned URL可以有一个过期时间,默认是7天。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    expiry time.Duration presigned URL的过期时间,单位是秒
    reqParams url.Values 额外的响应头,支持response-expiresresponse-content-typeresponse-cache-controlresponse-content-disposition

    示例

    1. // Set request parameters for content-disposition.
    2. reqParams := make(url.Values)
    3. reqParams.Set("response-content-disposition", "attachment; filename=\"your-filename.txt\"")
    4. // Generates a presigned url which expires in a day.
    5. presignedURL, err := minioClient.PresignedGetObject("mybucket", "myobject", time.Second * 24 * 60 * 60, reqParams)
    6. if err != nil {
    7. fmt.Println(err)
    8. return
    9. }
    10. fmt.Println("Successfully generated presigned URL", presignedURL)

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

    生成一个用于HTTP GET操作的presigned URL。浏览器/移动客户端可以在即使存储桶为私有的情况下也可以通过这个URL进行下载。这个presigned URL可以有一个过期时间,默认是7天。

    注意:你可以通过只指定对象名称上传到S3。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    expiry time.Duration presigned URL的过期时间,单位是秒

    示例

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

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

    生成一个用于HTTP GET操作的presigned URL。浏览器/移动客户端可以在即使存储桶为私有的情况下也可以通过这个URL进行下载。这个presigned URL可以有一个过期时间,默认是7天。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectName string 对象的名称
    expiry time.Duration presigned URL的过期时间,单位是秒
    reqParams url.Values 额外的响应头,支持response-expiresresponse-content-typeresponse-cache-controlresponse-content-disposition

    示例

    1. // Set request parameters for content-disposition.
    2. reqParams := make(url.Values)
    3. reqParams.Set("response-content-disposition", "attachment; filename=\"your-filename.txt\"")
    4. // Generates a presigned url which expires in a day.
    5. presignedURL, err := minioClient.PresignedHeadObject("mybucket", "myobject", time.Second * 24 * 60 * 60, reqParams)
    6. if err != nil {
    7. fmt.Println(err)
    8. return
    9. }
    10. fmt.Println("Successfully generated presigned URL", presignedURL)

    PresignedPostPolicy(PostPolicy) (*url.URL, map[string]string, error)

    允许给POST操作的presigned URL设置策略条件。这些策略包括比如,接收对象上传的存储桶名称,名称前缀,过期策略。

    1. // Initialize policy condition config.
    2. policy := minio.NewPostPolicy()
    3. // Apply upload policy restrictions:
    4. policy.SetBucket("mybucket")
    5. policy.SetKey("myobject")
    6. policy.SetExpires(time.Now().UTC().AddDate(0, 0, 10)) // expires in 10 days
    7. // Only allow 'png' images.
    8. policy.SetContentType("image/png")
    9. // Only allow content size in range 1KB to 1MB.
    10. policy.SetContentLengthRange(1024, 1024*1024)
    11. // Add a user metadata using the key "custom" and value "user"
    12. policy.SetUserMetadata("custom", "user")
    13. // Get the POST form key/value object:
    14. url, formData, err := minioClient.PresignedPostPolicy(policy)
    15. if err != nil {
    16. fmt.Println(err)
    17. return
    18. }
    19. // POST your content from the command line using `curl`
    20. fmt.Printf("curl ")
    21. for k, v := range formData {
    22. fmt.Printf("-F %s=%s ", k, v)
    23. }
    24. fmt.Printf("-F file=@/etc/bash.bashrc ")
    25. fmt.Printf("%s\n", url)

    6. 存储桶策略/通知

    SetBucketPolicy(bucketname, objectPrefix string, policy policy.BucketPolicy) error

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

    必须引入github.com/minio/minio-go/pkg/policy包。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectPrefix string 对象的名称前缀
    policy policy.BucketPolicy Policy的取值如下:
    policy.BucketPolicyNone
    policy.BucketPolicyReadOnly
    policy.BucketPolicyReadWrite
    policy.BucketPolicyWriteOnly

    返回值

    参数 类型 描述
    err error 标准Error

    示例

    1. // Sets 'mybucket' with a sub-directory 'myprefix' to be anonymously accessible for
    2. // both read and write operations.
    3. err = minioClient.SetBucketPolicy("mybucket", "myprefix", policy.BucketPolicyReadWrite)
    4. if err != nil {
    5. fmt.Println(err)
    6. return
    7. }

    GetBucketPolicy(bucketName, objectPrefix string) (policy.BucketPolicy, error)

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

    必须引入github.com/minio/minio-go/pkg/policy包。

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    objectPrefix string 该存储桶下的对象前缀

    返回值

    参数 类型 描述
    bucketPolicy policy.BucketPolicy 取值如下: none, readonly, readwrite,或者writeonly
    err error 标准Error

    示例

    1. bucketPolicy, err := minioClient.GetBucketPolicy("mybucket", "")
    2. if err != nil {
    3. fmt.Println(err)
    4. return
    5. }
    6. fmt.Println("Access permissions for mybucket is", bucketPolicy)

    GetBucketNotification(bucketName string) (BucketNotification, error)

    获取存储桶的通知配置

    参数

    参数 类型 描述
    bucketName string 存储桶名称

    返回值

    参数 类型 描述
    bucketNotification minio.BucketNotification 含有所有通知配置的数据结构
    err error 标准Error

    示例

    1. bucketNotification, err := minioClient.GetBucketNotification("mybucket")
    2. if err != nil {
    3. fmt.Println("Failed to get bucket notification configurations for mybucket", err)
    4. return
    5. }
    6. for _, queueConfig := range bucketNotification.QueueConfigs {
    7. for _, e := range queueConfig.Events {
    8. fmt.Println(e + " event is enabled")
    9. }
    10. }

    SetBucketNotification(bucketName string, bucketNotification BucketNotification) error

    给存储桶设置新的通知

    参数

    参数 类型 描述
    bucketName string 存储桶名称
    bucketNotification minio.BucketNotification 发送给配置的web service的XML

    返回值

    参数 类型 描述
    err error 标准Error

    示例

    1. queueArn := minio.NewArn("aws", "sqs", "us-east-1", "804605494417", "PhotoUpdate")
    2. queueConfig := minio.NewNotificationConfig(queueArn)
    3. queueConfig.AddEvents(minio.ObjectCreatedAll, minio.ObjectRemovedAll)
    4. queueConfig.AddFilterPrefix("photos/")
    5. queueConfig.AddFilterSuffix(".jpg")
    6. bucketNotification := minio.BucketNotification{}
    7. bucketNotification.AddQueue(queueConfig)
    8. err = minioClient.SetBucketNotification("mybucket", bucketNotification)
    9. if err != nil {
    10. fmt.Println("Unable to set the bucket notification: ", err)
    11. return
    12. }

    RemoveAllBucketNotification(bucketName string) error

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

    参数

    参数 类型 描述
    bucketName string 存储桶名称

    返回值

    参数 类型 描述
    err error 标准Error

    示例

    1. err = minioClient.RemoveAllBucketNotification("mybucket")
    2. if err != nil {
    3. fmt.Println("Unable to remove bucket notifications.", err)
    4. return
    5. }

    ListenBucketNotification(bucketName, prefix, suffix string, events []string, doneCh <-chan struct{}) <-chan NotificationInfo

    ListenBucketNotification API通过notification channel接收存储桶通知事件。返回的notification channel有两个属性,'Records'和'Err'。

    • 'Records'持有从服务器返回的通知信息。
    • 'Err'表示的是处理接收到的通知时报的任何错误。
      注意:一旦报错,notification channel就会关闭。

    参数

    参数 类型 描述
    bucketName string 被监听通知的存储桶
    prefix string 过滤通知的对象前缀
    suffix string 过滤通知的对象后缀
    events []string 开启指定事件类型的通知
    doneCh chan struct{} 在该channel上结束ListenBucketNotification iterator的一个message。

    返回值

    参数 类型 描述
    notificationInfo chan minio.NotificationInfo 存储桶通知的channel

    minio.NotificationInfo

    |属性 |类型 |描述 ||notificationInfo.Records | []minio.NotificationEvent | 通知事件的集合 ||notificationInfo.Err | error | 操作时报的任何错误(标准Error) |

    示例

    1. // Create a done channel to control 'ListenBucketNotification' go routine.
    2. doneCh := make(chan struct{})
    3. // Indicate a background go-routine to exit cleanly upon return.
    4. defer close(doneCh)
    5. // Listen for bucket notifications on "mybucket" filtered by prefix, suffix and events.
    6. for notificationInfo := range minioClient.ListenBucketNotification("mybucket", "myprefix/", ".mysuffix", []string{
    7. "s3:ObjectCreated:*",
    8. "s3:ObjectAccessed:*",
    9. "s3:ObjectRemoved:*",
    10. }, doneCh) {
    11. if notificationInfo.Err != nil {
    12. fmt.Println(notificationInfo.Err)
    13. }
    14. fmt.Println(notificationInfo)
    15. }

    7. 客户端自定义设置

    SetAppInfo(appName, appVersion string)

    给User-Agent添加的自定义应用信息。

    参数

    参数 类型 描述
    appName string 发请求的应用名称
    appVersion string 发请求的应用版本

    示例

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

    SetCustomTransport(customHTTPTransport http.RoundTripper)

    重写默认的HTTP transport,通常用于调试或者添加自定义的TLS证书。

    参数

    参数 类型 描述
    customHTTPTransport http.RoundTripper 自定义的transport,例如:为了调试对API请求响应进行追踪。

    TraceOn(outputStream io.Writer)

    开启HTTP tracing。追踪信息输出到io.Writer,如果outputstream为nil,则trace写入到os.Stdout标准输出。

    参数

    参数 类型 描述
    outputStream io.Writer HTTP trace写入到outputStream

    TraceOff()

    关闭HTTP tracing。

    SetS3TransferAccelerate(acceleratedEndpoint string)

    给后续所有API请求设置ASW S3传输加速endpoint。注意:此API仅对AWS S3有效,对其它S3兼容的对象存储服务不生效。

    参数

    参数 类型 描述
    acceleratedEndpoint string 设置新的S3传输加速endpoint。

    8. 了解更多

    • 用Go语言创建属于你的音乐播放器APP示例

    原文: https://docs.minio.io/cn/golang-client-api-reference.html