Você desejará configurar o Origin Access Identity. Isso permite que você mantenha seu bucket privado e permita acesso somente através do CloudFront. Isso é muito fácil de configurar. Eu incluí um link para orientá-lo através dos passos e para ajudá-lo a entender tudo. Depois de configurar o OAI, exclua a política do seu bucket do S3. Seu bucket do S3 é privado e apenas fornece acesso aos usuários através do CloudFront.
Usando uma identidade de acesso do Origin para restringir o acesso a Seu conteúdo do Amazon S3
Typically, if you're using an Amazon S3 bucket as the origin for a CloudFront distribution, you grant everyone permission to read the objects in your bucket. This allows anyone to access your objects either through CloudFront or using the Amazon S3 URL. CloudFront doesn't expose Amazon S3 URLs, but your users might have those URLs if your application serves any objects directly from Amazon S3 or if anyone gives out direct links to specific objects in Amazon S3.