diff --git a/pkg/lightning/lightning.go b/pkg/lightning/lightning.go index d9714f0bb..5b2b67f82 100755 --- a/pkg/lightning/lightning.go +++ b/pkg/lightning/lightning.go @@ -271,7 +271,11 @@ func (l *Lightning) run(taskCtx context.Context, taskCfg *config.Config, g glue. if err != nil { return errors.Annotate(err, "parse backend failed") } - s, err := storage.Create(ctx, u, true) + s, err := storage.New(ctx, u, &storage.ExternalStorageOptions{ + // we skip check path in favor of delaying the error to when we actually access the file. + // on S3, performing "check path" requires the additional "s3:ListBucket" permission. + SkipCheckPath: true, + }) if err != nil { return errors.Annotate(err, "create storage failed") } diff --git a/pkg/lightning/mydump/loader.go b/pkg/lightning/mydump/loader.go index 182e892be..73f2f40e8 100644 --- a/pkg/lightning/mydump/loader.go +++ b/pkg/lightning/mydump/loader.go @@ -93,7 +93,7 @@ func NewMyDumpLoader(ctx context.Context, cfg *config.Config) (*MDLoader, error) if err != nil { return nil, err } - s, err := storage.Create(ctx, u, true) + s, err := storage.New(ctx, u, &storage.ExternalStorageOptions{SkipCheckPath: true}) if err != nil { return nil, err }