Como você configura o escalonamento automático do Amazon EC2 para criar instâncias programaticamente com base em um evento de banco de dados?
Tenho um aplicativo que processa várias dezenas de arquivos grandes (100 MB cada) mensalmente. Atualmente, uma vez por mês, crio manualmente uma instância por arquivo e, em seguida, executo um script de shell para iniciar a tarefa de processamento em cada instância e elimino as instâncias assim que todo o processamento estiver concluído.
Desejo automatizar isso configurando um grupo de dimensionamento automático do EC2 para iniciar uma nova instância quando um novo registro de banco de dados for criado, significando que um novo arquivo está pronto para ser processado. Essa instância será semeada com código que se conectará automaticamente ao banco de dados, localizará o novo arquivo, marcará como "em andamento" e começará a processá-lo.
Eu controlo quando os arquivos são adicionados ao sistema, então não preciso me preocupar com algum usuário adicionando 1000 arquivos e excedendo minha cota EC2. No entanto, não vejo nenhuma maneira óbvia de configurar a escala automática para funcionar assim. Parece apenas acionar a criação de instância com base no uso de CPU ou ELB.
Suas observações estão corretas - você não poderá usar os próprios controles de AutoScaling da Amazon para esse tipo de evento. No entanto, você pode criar um script por meio das ferramentas CLI da Amazon.
Você pode pesquisar o arquivo de várias maneiras (por exemplo, inotify/incron, consulta SQL periódica ao banco de dados ou até mesmo uma
ls
pasta) e fazer uma solicitação de API da Amazon para aumentar a capacidade de seu grupo de AutoScaling alterando a capacidade desejada quando o evento é acionado.Depois que o trabalho terminar, você pode fazer com que a instância se autoencerre - obtendo o ID da instância do URL de metadados e alimentando-o diretamente no Amazon CLI ou definindo a instância para encerrar no desligamento e emitindo uma
shutdown -h now
vez que seu trabalho de processamento está completo.Não conheço os detalhes de sua implementação, então YMMV descontroladamente aqui.