32 lines
742 B
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
|
|
}
|