Anche noi stiamo cercando una soluzione qui.
Una configurazione abbastanza standard (e raccomandata da AWS) è quella di non avere mai un bucket o oggetti S3 pubblici e, se è necessario servire oggetti pubblicamente, farlo tramite una distribuzione CloudFront.
L’attuale implementazione S3 impone l’accesso pubblico al bucket S3 (tramite questa problematica, così come in S3 CDN URL ignored when uploading into posts), cosa che è sconsigliata per motivi di sicurezza e costi.