Sou fã de criar novas AMIs para grandes lançamentos e mudanças no sistema, mas para lançamentos menores também gosto de ter caixas configuradas para fazer uma git pull
na inicialização para atualizar apenas a base de código. Nós lançamos pequenas alterações de código regularmente, então o ônus de criar novas AMIs não vale a pena.
Depois que a máquina estiver em funcionamento, acho que é melhor usar ferramentas como o capistrano para fazer implementações no estilo push. Não gosto de ver o novo lançamento automático de código para um servidor com tarefas agendadas, pois é muito mais difícil lidar com exceções. Inevitavelmente, alguém enviará o código para o repositório que precisa reverter e, enquanto isso, os cronjobs podem acionar e lançar o código errôneo.
A questão principal é que, quando uma nova instância é criada em um contexto de escalonamento automático, ela pode se atualizar com a última base de código autônoma.