@@ -175,6 +175,15 @@ func (r *BucketReconciler) reconcile(ctx context.Context, bucket sourcev1.Bucket
175175 ctxTimeout , cancel := context .WithTimeout (ctx , bucket .GetTimeout ())
176176 defer cancel ()
177177
178+ exists , err := s3Client .BucketExists (ctxTimeout , bucket .Spec .BucketName )
179+ if err != nil {
180+ return sourcev1 .BucketNotReady (bucket , sourcev1 .BucketOperationFailedReason , err .Error ()), err
181+ }
182+ if ! exists {
183+ err = fmt .Errorf ("bucket '%s' not found" , bucket .Spec .BucketName )
184+ return sourcev1 .BucketNotReady (bucket , sourcev1 .BucketOperationFailedReason , err .Error ()), err
185+ }
186+
178187 // download bucket content
179188 for object := range s3Client .ListObjects (ctxTimeout , bucket .Spec .BucketName , minio.ListObjectsOptions {Recursive : true }) {
180189 if object .Err != nil {
@@ -270,10 +279,14 @@ func (r *BucketReconciler) auth(ctx context.Context, bucket sourcev1.Bucket) (*m
270279 return nil , fmt .Errorf ("invalid '%s' secret data: required fields 'accesskey' and 'secretkey'" , secret .Name )
271280 }
272281 opt .Creds = credentials .NewStaticV4 (accesskey , secretkey , "" )
273- } else if bucket .Spec .Provider == "aws" {
282+ } else if bucket .Spec .Provider == sourcev1 . AmazonBucketProvider {
274283 opt .Creds = credentials .NewIAM ("" )
275284 }
276285
286+ if opt .Creds == nil {
287+ return nil , fmt .Errorf ("no bucket credentials found" )
288+ }
289+
277290 return minio .New (bucket .Spec .Endpoint , & opt )
278291}
279292
0 commit comments