gis/app/storage.go

32 lines
742 B
Go

package app
import (
"context"
"fmt"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func newS3Client(ctx context.Context, cfg *Config) (*minio.Client, error) {
client, err := minio.New(cfg.S3Endpoint, &minio.Options{
Creds: credentials.NewStaticV4(cfg.S3AccessKey, cfg.S3SecretKey, ""),
Secure: cfg.S3UseSSL,
})
if err != nil {
return nil, fmt.Errorf("s3 client: %w", err)
}
exists, err := client.BucketExists(ctx, cfg.S3Bucket)
if err != nil {
return nil, fmt.Errorf("s3 bucket check: %w", err)
}
if !exists {
if err := client.MakeBucket(ctx, cfg.S3Bucket, minio.MakeBucketOptions{}); err != nil {
return nil, fmt.Errorf("s3 make bucket: %w", err)
}
}
return client, nil
}