I need to do a 301 redirect from example.com to www.example.com using Route 53 (and S3 if necessary). There are a few solutions for similar problems but they either do not a
Try making an alias record instead of CNAME.
Per this answer: RRSet of type CNAME with DNS name foo.com. is not permitted at apex in zone bar.com