Falaaaaa Dev´s, DevOps e SRE´s , quando o assunto é reduzir custos em cloud nas empresas cabeças podem rolar não é ? kkkk então pensando nisso, Criei uma função Lambda simples para poder iniciar/interromper tarefas do serviço ECS para um cluster específico, cluster estes que rodem em Desenvolvimento ou até mesmo em homologação que não precise está operando 24/7 consumindo horrores no bolso da empresa.
Essa função do Lambda será criada em Go, ou como alguns amam dizer Golang ;) e integrada com duas regras de eventos do CloudWatch, uma para iniciar as tarefas às 10h e outra para interromper todas as tarefas as meia-noite.
irá perceber que o código que estou implementando é bem simples, proposital para poder deixar o mais claro possível, pois é totalmente adaptável a validações de possíveis erros e pouco mais de complexidade e switch case, como a ideia aqui é ir direto ao ponto deixaremos desta forma rs.
recebe como entrada um evento com o seguinte json.
que se referem aos nomes de cluster e serviço do ECS, enquanto status será o estado desejado para a task na regra do CloudWatch Events para definir se iniciar ou interromper as tarefas usando o parâmetro desejadoCount.
Veja como configurar a regra CloudWatch Events:
Obs: Aproveitei uma imagem de outro artigo porém lembre-se de passar o json citado a cima para a função Lambda conforme o esperado pelo código:
{"cluster": "NomeDoClusterECS","service": "NomeDoService","status": "start ou stop"}
por fim, precisamos adicionar uma política IAM para permitir que a função Lambda atualize o serviço ECS, portanto, adicione a seguinte política em linha à função IAM anexada à sua função Lambda
espero que ajude no seu dia a dia, e te faça economizar umas doletas na AWS ;)