Create a S3 Bucket with a unique name,set it public,set the bucket policy,set it for static website hosting.
Set an index html and an error html
Use a CloudFront web distribution and set the origin as this newly created bucket
During the CloudFront configuration, Set domain name and default document as index.html otherwise it won’t work
you can access it using the cloudfront as https://abc.cloudfront.net where abc will be in the cloudfront distribution config that you set up.
Use Cloudflare to forward to a S3 bucket created with name www.mywebsite
In Cloudflare DNS set www in CNAME and set value www.mywebsite.s3-website.us-east-1.amazonaws.com
www.mywebsite should now show the index html page
On the CloudFront distribution Set up a Origin Access Identity to restrict the bucket from being accessed directly.
This prevents users from accessing the objects via Amazon S3 URLs.
Review the bucket policy to make sure only OAI can access the bucket.