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 }