Iniciar automaticamente a instância EC2 quando o DNS for solicitado

Iniciar automaticamente a instância EC2 quando o DNS for solicitado

Tenho algumas instâncias do EC2 executando um aplicativo da web em um Docker e as configurei para serem interrompidas automaticamente enquanto estiver fora do horário de trabalho (por exemplo, das 7h às 19h) para reduzir custos. Gostaria de saber se posso automatizar a instância para iniciar quando a URL da web app for solicitada (mesmo quando o EC2 estiver parado), caso alguém queira acessar fora do horário comercial previamente configurado.

Algumas pessoas me recomendaram executar o aplicativo no AWS Lambda, mas como faço para acionar a função para iniciar com uma chamada DNS?

Responder1

Isto não é facilmente possível. Você pode encontrar alguma maneira complexa com o registro de lambda e rota 53, mas mesmo que o faça, pode levar 5 minutos para iniciar uma instância do EC2. Isso significa que no momento em que a instância do EC2 é iniciada, a solicitação expirou.

lambda

Reescrever seu aplicativo em computação lambda/sem servidor removeria esse problema. Você paga apenas por solicitação e não paga muito na maioria dos casos. A maioria dos aplicativos sem servidor custa muito pouco. Algumas, no entanto, podem custar muito mais do que as instâncias EC2.

Opção Prática

A maneira mais prática de manter os custos baixos é provavelmente usar escalonamento automático e pequenas unidades de computação e expansão, em vez de menos instâncias grandes. Você mantém um pequeno conjunto de recursos em execução 24 horas por dia, 7 dias por semana, com mais recursos em execução durante os períodos de maior movimento.

Com contêineres, você pode considerar usar o Fargate para manter um contêiner com poucos recursos funcionando 24 horas por dia, 7 dias por semana e, em seguida, aumentar mais recursos quando a carga for criada. Isso pode ser escalonamento automático ou escalonamento programado. Não sei se você pode usar Fargate e EC2 no mesmo cluster ECS, mas se puder, isso pode resolver o problema.

Responder2

Não é possível iniciar uma instância ec2 quando a URL do aplicativo web é solicitada. A solicitação http atingirá o tempo limite antes que a instância esteja pronta para atendê-la.

Não haveria autenticação envolvida, o que significa que qualquer solicitação aleatória de um bot acionaria o lançamento da instância ec2.

Em teoria, deveria ser possível criar uma pilha para fazer isso, por exemplo, usando solicitações de roteamento ALB para um caminho específico para uma função Lambda que poderia iniciar uma instância ec2. Mas os recursos envolvidos seriam mais caros do que deixar a instância rodar 24 horas por dia, 7 dias por semana.

Se você deseja cortar custos, a AWS pode não ser o melhor fornecedor para você.

informação relacionada