mirror of
https://github.com/btouchard/ackify-ce.git
synced 2026-02-08 06:48:32 -06:00
feat(storage): auto-create S3 bucket if it doesn't exist
Instead of failing when bucket doesn't exist, attempt to create it. This improves the initial setup experience with MinIO and other S3 compatible storage providers.
This commit is contained in:
@@ -62,12 +62,19 @@ func NewS3Provider(cfg S3Config) (*S3Provider, error) {
|
||||
|
||||
client := s3.NewFromConfig(awsCfg, s3Opts...)
|
||||
|
||||
// Verify bucket exists
|
||||
// Check if bucket exists, create if not
|
||||
_, err = client.HeadBucket(context.Background(), &s3.HeadBucketInput{
|
||||
Bucket: aws.String(cfg.Bucket),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to access S3 bucket %s: %w", cfg.Bucket, err)
|
||||
// Try to create the bucket
|
||||
_, createErr := client.CreateBucket(context.Background(), &s3.CreateBucketInput{
|
||||
Bucket: aws.String(cfg.Bucket),
|
||||
})
|
||||
if createErr != nil {
|
||||
return nil, fmt.Errorf("bucket %s does not exist and failed to create it: %w", cfg.Bucket, createErr)
|
||||
}
|
||||
logger.Logger.Info("S3 bucket created", "bucket", cfg.Bucket)
|
||||
}
|
||||
|
||||
logger.Logger.Info("S3 storage provider initialized", "bucket", cfg.Bucket, "endpoint", cfg.Endpoint)
|
||||
|
||||
Reference in New Issue
Block a user