Seu motivo para não querer usar o EBS é que ele é lento. Você pode testar as instâncias otimizadas do EBS, além dos volumes IOPS EBS provisionados (que podem ser RAIDed para IOPS mais altos). Isso simplificará a disponibilização de dados para novas instâncias.
Observe que um volume do EBS leva um tempo para disponibilizar todos os dados com o melhor desempenho. Ou seja, o desempenho obtido em um novo volume do EBS é mais lento do que o desempenho após os blocos de volume terem sido preenchidos.
Aqui está um artigo que escrevi sobre esse processo, incluindo uma maneira de identificar quando um volume do EBS concluiu a inicialização de um instantâneo (embora basicamente inclua a transferência de todo o volume pela rede):
http://alestic.com/2010/03/ebs-volume-initialization-from-snapshot
Se o seu aplicativo deseja iniciar imediatamente às custas de ser um pouco lento quando precisa acessar dados previamente não lidos, então eu recomendaria instâncias otimizadas do EBS além de volumes IOPS EBS provisionados, possivelmente em RAID-0. Depois que o volume (s) for preenchido, a velocidade do aplicativo deve aumentar consideravelmente.
Caso contrário, o nome do jogo ao carregar dados do S3 é paralelização . Você pode ter uma centena de conexões simultâneas baixando partes dos dados do serviço S3 superescalável, contanto que você esteja usando um tipo de instância com IO suficientemente alto.
Mesmo em uma interface de 1 Gbps, no entanto, ainda levará mais de uma hora para baixar 500 GB.
Aqui está um truque possível a considerar: Com uma instância otimizada do EBS, você obtém uma interface de rede dedicada para o subsistema EBS, separada da interface de rede padrão. Você pode reduzir seu tempo de carregamento de dados pela metade se baixar metade dos dados do S3 e a outra metade de um volume do EBS.
Caso você não tenha considerado: verifique se os dados estão compactados no armazenamento para reduzir o tempo de transmissão.