Question: I am experimenting with AWS S3 and CloudFront for a web application that I am developing. 

In the app I'm letting users upload files to the S3 bucket (using the AWS SDK) and make it available via CloudFront CDN, but the issue is even when the files are uploaded and ready in the S3 bucket it takes about a minute or 2 to be available in the CloudFront CDN url, is this normal?

Answer: 
Are these new files being written to S3 for the first time, or are they updates to existing files? S3 provides read-after-write consistency for new objects, and given CloudFront's pull model you should not be having this issue with new files written to S3. If you are, then I would open a ticket with AWS. 

If these are updates to existing files, then you have both S3 eventual consistency and CloudFront cache expiration to deal with. Both of which could cause this sort of behavior.
As observed in your comment, it seems that google chrome is messing up with your upload/preview strategy:

1. Chrome is requesting the URL that currently doesn't have the
content.
2. the request is cached by cloudfront with invalid response
3. you upload the file to S3
4. when preview the uploaded file the cloudfront answers with the cached response (step 2).
5. after the cloudfront cache expires, cloudfront hits origin and the problem can no longer be reproducible.