Вызовы API клиента minio (GO SDK) не работают

Ни один из вызовов API для выполнения функций на сервере minio, работающем локально, не работает.

Вот как я подключаюсь к серверу и перечисляю ведра

// Use a secure connection.
ssl := false

// Initialize minio client object.
minioClient, err := minio.New("localhost:9000", "minioadmin", "minioadmin", ssl)
if err != nil {
    fmt.Println(err)
    return
}

err = minioClient.MakeBucket("testlalabucket", "")
fmt.Println(err)

Выдает ошибку

[] XML syntax error on line 10: element <link> closed by </head>

Использование CLI для связи с сервером minio:

➜  ~ mc ls localminio
mc: <ERROR> Unable to list folder. XML syntax error on line 10: element <link> closed by </head>

Выполнение другой операции (создание ведер)

mc: <ERROR> Unable to make bucket `localminio/mylalabucket`. The specified bucket does not exist.
(1) mb-main.go:145 cmd.mainMakeBucket(..) Tags: [localminio/mylalabucket]
(0) client-s3.go:1120 cmd.(*s3Client).MakeBucket(..)

Я могу получить доступ к пользовательскому интерфейсу сервера minio для выполнения всех этих операций, но не могу сделать это через API.


person RPT    schedule 04.03.2020    source источник


Ответы (1)


Вероятно, версия SDK не соответствует версии сервера. Вот полный пример, который работает:

  1. Запустите сервер в докере

    docker run -p 9000:9000 minio/minio:RELEASE.2020-02-27T00-23-05Z server /data  
    
  2. Создайте файл test.go следующим образом

    package main
    
    import (
        "log"
    
        "github.com/minio/minio-go/v6"
    )
    
    func main() {
        endpoint := "localhost:9000"
        accessKeyID := "minioadmin"
        secretAccessKey := "minioadmin"
        useSSL := false
    
        // Initialize minio client object.
        minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
        if err != nil {
            log.Fatalln(err)
        }
    
        bucketName := "testlalabucket"
        err = minioClient.MakeBucket(bucketName, "")
    
        if err != nil {
            // Check to see if we already own this bucket (which happens if you run this twice)
            exists, errBucketExists := minioClient.BucketExists(bucketName)
            if errBucketExists == nil && exists {
                log.Printf("We already own %s\n", bucketName)
            } else {
                log.Fatalln(err)
            }
        }
    
        buckets, err := minioClient.ListBuckets()
        if err != nil {
            log.Fatalln(err)
        }
    
        for _, bucket := range buckets {
            log.Println(bucket)
        }
    }
    
  3. Беги GO111MODULE=on go run test.go

person Ilya    schedule 04.03.2020