I am thinking to put static and partially static parts to EC2 and dynamic parts to S3.
Acho que você está usando os termos static e dynamic de maneira diferente do que a maioria de nós entenderia. Dados estáticos seriam imagens enviadas por usuários. Dados dinâmicos seriam coisas geradas pelo código. Eu acho que você está se concentrando na frequência em que esses dados podem mudar. Talvez você queira dizer que as imagens dos usuários são estáticas no sentido de que, uma vez carregadas, elas nunca serão alteradas, ao contrário de um arquivo HTML estático que você pode atualizar de vez em quando. Seguindo em frente, vou me referir a estática e dinâmica em meus próprios termos, respectivamente: arquivos que são servidos como estão e arquivos que são códigos que geram dados.
Arquivos que são estáticos devem ser hospedados no S3. Mesmo que você possa eventualmente alterá-los ou parar de referenciá-los. Pode ser melhor simplesmente fazer com que cada versão de um arquivo tenha um nome exclusivo.
Os dados dinâmicos devem ser hospedados em suas instâncias do EC2. O ideal é que você tenha um método de atualizar esses dados sem encerrar instâncias, possivelmente um meio de um sistema de arquivos compartilhado que permita manter todos os nós síncronos sobre o que eles estão atendendo. Como alternativa, se pequenas diferenças no tempo em que os nós estão sendo veiculados em códigos diferentes pudessem ser aceitáveis, você também poderia usar scripts para enviar arquivos para fora.