Você não precisa usar o S3 como origem de uma distribuição do CloudFront, você pode especificar um servidor HTTP arbitrário. Existem algumas limitações no entanto; da documentação do CloudFront :
A custom origin is an HTTP server, for example, a web server. The HTTP server can be an Amazon EC2 instance or an HTTP server that you manage privately. When you use a custom origin, you specify the DNS name of the server, along with the HTTP and HTTPS ports and the protocol that you want CloudFront to use when fetching objects from your origin.
Most CloudFront features are supported when you use a custom origin with the following exceptions:
Streaming distributions—Not supported.
Private content—Although you can use a signed URL to distribute content from a custom origin, for CloudFront to access the custom origin, the origin must remain publicly accessible. For more information, see Serving Private Content through CloudFront.