It is technically possible to combine Varnish & Cloudflare. However, they have the same role: they both are responsible for caching the AWS output.
My advice is to use either Varnish or Cloudflare. But if you're certain you need both, I would suggest the following setup:
Client -> Hitch TLS Proxy -> Varnish -> Cloudflare -> AWS
The reason why Hitch is added to the flow is because Varnish doesn't support TLS natively and requires a TLS proxy. This also means that the connection between Varnish & Cloudflare will be over plain HTTP.
PROXY protocol to facilitate communication between multiple proxies
I would recommend connecting the different proxies using the PROXY protocol. This allows the original client information to be transported end-to-end. See https://www.varnish-software.com/developers/tutorials/proxy-protocol-varnish/ for more information about the PROXY protocol.
If your Cloudflare plan supports the PROXY protocol, have a look at https://developers.cloudflare.com/spectrum/how-to/enable-proxy-protocol/ how to enable it.
If you manage to configure your Cloudflare with PROXY support, you should also enable it in your VCL backend definition by adding the .proxy_header = 2;
attribute
Installation guides
See https://www.varnish-software.com/developers/tutorials/#installations for an overview of Varnish installation guides.
See https://www.varnish-software.com/developers/tutorials/terminate-tls-varnish-hitch/ to learn how to install & configure Hitch.