API-вызовы Minio Client (GO SDK) не работают - PullRequest
0 голосов
/ 04 марта 2020

Ни один из вызовов 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>

Использование интерфейса командной строки для взаимодействия с сервером 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.

1 Ответ

0 голосов
/ 04 марта 2020

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

  1. Запустите сервер в docker

    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

...