Este híbrido Auto Scaling abordagem não parece estar disponível fora da caixa, na verdade, infelizmente.
No entanto, você pode contornar essa limitação da seguinte maneira (não testado, apenas um design de sistema com o qual eu ando manipulando há algum tempo):
Solução potencial
Conforme descrito em Usando o dimensionamento automático para iniciar instâncias spot , o lance de preço spot é um parâmetro da configuração de inicialização em uso. Como você apontou, não há uma configuração de ativação híbrida disponível, ela deve ser sob demanda ou local, o que significa que o caso de uso requer duas configurações de ativação diferentes.
Isso não parece ajudar imediatamente, porque você pode anexar apenas uma configuração de inicialização a um grupo de Auto Scaling de cada vez , com as seguintes restrições (parcialmente desatualizadas) (consulte Configuração de inicialização ):
Quando você anexa uma configuração de inicialização nova ou atualizada ao seu grupo Auto Scaling, qualquer nova instância será iniciada usando os novos parâmetros de configuração. Instâncias existentes não são afetadas . Quando o Auto Scaling precisa diminuir, primeiro termina as instâncias que têm uma configuração de inicialização mais antiga . [ênfase minha]
As partes enfatizadas são fundamentais, com a primeira cobrindo o requisito de manter as instâncias sob demanda em execução após a alteração da respectiva configuração inicial de ativação por demanda para a configuração adicional de ativação local, e a última não sendo mais necessariamente o caso devido a as políticas de terminação automática de dimensionamento introduzidas recentemente (para uma mudança, geralmente não há alarde por meio de uma postagem do blog da AWS), documentadas na Política de encerramento de instância para o seu grupo de dimensionamento automático :
Antes de o Auto Scaling selecionar uma instância para finalizar, ele primeiro identifica a Zona de Disponibilidade que possui mais instâncias que as outras Zonas de Disponibilidade usadas pelo grupo. Se todas as zonas de disponibilidade tiverem o mesmo número de instâncias, ele identificará uma zona de disponibilidade aleatória. Na Zona de disponibilidade identificada, o Auto Scaling usa a política de encerramento para selecionar a instância para encerramento . [ênfase minha]
Conforme descrito em Como sua política de rescisão funciona , agora você pode especificar NewestInstance , se desejar que a última instância iniciada seja encerrada , que seria uma das instâncias spot lançadas mais recentemente:
O Auto Scaling usa o tempo de inicialização da instância para identificar a instância que foi lançada pela última vez.
Obviamente, pode haver um pouco mais disso, por exemplo, você pode especificar qualquer uma das políticas como uma política autônoma ou pode listar várias políticas em uma lista ordenada , mas essa abordagem deve garantir a carga de todas as instâncias sendo fatoradas no medições e gatilhos de escala automática ; uma ressalva permanece:
Embargo
Se o balanceador de carga encerrar uma das instâncias sob demanda por qualquer outro motivo (por exemplo, porque se tornou prejudicial por si só), ele não será substituído automaticamente por uma instância sob demanda. Portanto, você precisa monitorar e contabilizar esse evento separadamente, por exemplo, ativando temporariamente a configuração de inicialização sob demanda novamente.
Boa sorte!