I'm assuming that "all s3 buckets" are all buckets in the AWS account the backend is running in.
A frontend application can be allowed to access AWS API directly or through various hoops.
The simplest way is to have a backend application, as backend application can easily access AWS API from "inside" AWS and deliver this through your client session to the frontend application. There is an AWS API
to retrieve all buckets.
Without a backend application the other option would be to use API Gateway and integrate with Cognito to allow AWS API Calls
for that account. This way is much more complicated.