Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Desvendando o quebra-cabeça da propagação de tags no ECS

By Ciara-CloudJun 3, 20245 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Recentemente, um dos nossos clientes se deparou com um problema: as tags de recursos atribuídas ao serviço do Amazon Elastic Container Service (ECS) não estavam sendo propagadas para as tasks do ECS. Essas tags eram fundamentais para o cliente, que as usava para monitorar e gerenciar os custos de um projeto específico.

Na AWS, as Cost Allocation Tags são essenciais para acompanhar custos. Existem dois tipos: as tags geradas pela AWS, aplicadas automaticamente aos recursos, e as tags definidas pelo usuário, criadas e aplicadas por você. As tags definidas pelo usuário oferecem flexibilidade para organizar os recursos.

Neste artigo, vou me aprofundar na causa raiz desse problema, explicando por que as tags definidas pelo usuário se comportam de forma diferente das tags gerenciadas pelo ECS. Também vou mostrar como contornar esse desafio e garantir que sua estratégia de alocação de custos continue eficaz.

Além disso, vou mostrar como aprimoramos o acompanhamento de custos do cliente com as poderosas ferramentas de FinOps da DoiT.

O problema — Tagging de recursos no ECS

Para gerenciar melhor os seus recursos do Amazon ECS, você pode anexar seus próprios metadados a cada recurso usando tags. Cada tag é composta por uma chave e um valor opcional.

Nosso cliente havia criado um cluster ECS e o associado a um serviço. Esse serviço foi configurado com a tag definida pelo usuário WebProject:CostTracking.

Tag definida pelo usuário no serviço do ECS

No entanto, percebemos um problema: a tag do serviço não estava sendo propagada para as tasks iniciadas por ele. Ao verificar o console do ECS, ficou claro que as tasks lançadas pelo serviço só recebiam as tags gerenciadas pelo ECS, e não as tags definidas pelo usuário no serviço.

Quando você usa as tags gerenciadas pelo Amazon ECS, o ECS aplica automaticamente tags com as informações do cluster a todas as tasks recém-lançadas.

Task do ECS sem tag definida pelo usuário

Usando o comando describe-services da AWS CLI, confirmamos que as tags do serviço não estavam sendo propagadas.

$ aws ecs describe-services — services nginx-service — cluster web-cluster — region us-east-1 — query ‘services[*].propagateTags’ — output text

Ao analisar os logs do CloudTrail referentes ao evento CreateService, vimos que o parâmetro para propagar as tags do serviço para as tasks não estava definido.

Log do CloudTrail mostrando que a tag do serviço não está sendo propagada

Quando você chama a API CreateService, especifica parâmetros como a definição da task, a quantidade desejada de tasks, o nome do serviço e, opcionalmente, detalhes sobre balanceamento de carga, descoberta de serviços, entre outros.

O parâmetro --propagate-tags define se as tags devem ser propagadas da definição da task ou do serviço para a task. Se nenhum valor for especificado, as tags não são propagadas. O padrão é NONE. As tags só podem ser propagadas para a task no momento da criação.

Pelo log do CloudTrail, dá para ver que, quando o serviço do ECS foi criado, o valor padrão não foi alterado. Por isso, quando o serviço criou as tasks, suas tags não foram propagadas para elas.

Por padrão, ao criar um serviço do ECS pelo console, a opção é não propagar as tags do serviço para as tasks.

O comportamento padrão do serviço do ECS é não propagar as tags

Ao configurar o serviço, se quiser que as tags do serviço também sejam aplicadas às tasks, é preciso selecionar essa opção no menu suspenso. Mais especificamente, escolha a opção de propagação de tags a partir do serviço.

Opção de tagging durante a criação do serviço

Como corrigir

Para propagar as tags definidas pelo usuário do serviço para as tasks, é preciso fazer um novo deployment. Mas essa ação tem que ser feita pela AWS CLI, e não pelo AWS Console.

Isso porque o comando UpdateService da CLI permite especificar o parâmetro — propagate-tags. Esse parâmetro não está disponível no AWS Console, e é por isso que precisamos usar a CLI nessa operação.

O comando a seguir foi usado para atualizar o serviço e forçar um novo deployment, para que as tags fossem propagadas do serviço para as tasks.

$ aws ecs update-service — cluster <CLUSTER_NAME> — service <SERVICE_NAME> — force-new-deployment — propagate-tags SERVICE

Conferindo o log do CloudTrail referente ao evento UpdateService, confirmamos que o parâmetro propagateTags agora estava definido como SERVICE.

Log do CloudTrail mostrando a atualização do serviço para propagar a tag para as tasks

Isso também pôde ser confirmado rodando o comando describe-services da CLI no serviço.

Conferindo a task recém-implantada, vemos que tanto as tags gerenciadas pelo ECS quanto as definidas pelo usuário foram propagadas para a task.

Tasks do ECS com tags gerenciadas pelo ECS e tags definidas pelo usuário.

Ferramentas de FinOps da DoiT

Depois de resolver o problema de tagging do cliente, partimos para ajudá-lo a melhorar o acompanhamento de custos. No mundo atual, em que tudo gira em torno da nuvem, gerenciar e otimizar operações na cloud pode ser uma tarefa e tanto. É aí que entra a DoiT, com um conjunto de ferramentas de FinOps feitas para simplificar e aprimorar a gestão da sua nuvem.

Reports

Um dos principais recursos que oferecemos são os Reports do DoiT Cloud Analytics, uma ferramenta poderosa que oferece uma visualização clara dos seus gastos na nuvem.

Esse relatório filtra os custos da AWS por recursos do ECS, usando a tag definida pelo usuário WebProject:CostTracking para um acompanhamento de custos preciso e detalhado.

Com esse nível de detalhe, nossos clientes entendem melhor seus gastos na nuvem e conseguem tomar decisões mais embasadas, otimizando suas operações com eficiência.

Alertas

Na DoiT, sabemos como a gestão proativa de custos é importante nas operações na nuvem. Por isso, ajudamos esse cliente a configurar alertas de cobrança para monitorar de perto os gastos com ECS.

Criamos um Alerta no console da DoiT para monitorar o gasto diário com ECS. Definimos a condição: sempre que o gasto com ECS passasse de € 5,00 por dia, o cliente seria notificado por e-mail.

Os alertas são configurados para notificar nosso cliente por e-mail assim que o gasto diário com ECS atingir um limite predefinido.

Notificação por e-mail acionada pelo Alerta

Essa configuração permite que nosso cliente acompanhe os custos de nuvem com eficiência e aja a tempo se os gastos começarem a subir mais do que o esperado.

Essa é só uma das muitas formas como ajudamos nossos clientes a otimizar suas operações na nuvem e extrair o máximo de valor dos seus investimentos.

Se você quer saber mais sobre como a DoiT pode ajudar a gerenciar seus recursos na nuvem, ou conhecer nossos produtos e serviços de FinOps, fique à vontade para entrar em contato.