Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Tag ECS non propagati: come risolvere il rebus

By Ciara-CloudJun 3, 20245 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Di recente, uno dei nostri clienti si è imbattuto in un problema: i tag delle risorse assegnati al proprio servizio Amazon Elastic Container Service (ECS) non venivano trasferiti alle task ECS. Si trattava di tag fondamentali, che il cliente utilizzava per monitorare e gestire i costi di un progetto specifico.

In AWS, i Cost Allocation Tags sono lo strumento chiave per tracciare i costi. Ne esistono di due tipi: quelli generati automaticamente da AWS e applicati alle risorse, e quelli definiti dall'utente, creati e applicati direttamente da chi gestisce l'infrastruttura. Questi ultimi offrono grande flessibilità nell'organizzazione delle risorse.

In questo articolo entreremo nel merito della causa del problema, spiegando perché i tag definiti dall'utente si comportano in modo diverso rispetto ai tag gestiti da ECS. Le mostreremo inoltre come affrontare la situazione e mantenere efficace la propria strategia di allocazione dei costi.

Vedremo infine come abbiamo potenziato il monitoraggio dei costi del cliente sfruttando i solidi strumenti FinOps di DoiT.

Il problema — Il tagging delle risorse ECS

Per gestire al meglio le risorse Amazon ECS, è possibile associare metadati personalizzati a ciascuna risorsa tramite i tag. Ogni tag è composto da una chiave e da un valore opzionale.

Il nostro cliente aveva creato un cluster ECS associandolo a un servizio. Il servizio era stato configurato con il tag definito dall'utente WebProject:CostTracking.

Tag definito dall'utente sul servizio ECS

Abbiamo però notato un'anomalia: il tag del servizio non veniva trasferito alle task avviate dal servizio stesso. Dalla console ECS risultava chiaro che le task lanciate dal servizio ricevevano solo i tag gestiti da ECS, e non quelli definiti dall'utente sul servizio.

Quando si utilizzano i tag gestiti da ECS, il servizio applica automaticamente le informazioni del cluster a tutte le task appena avviate.

Task ECS senza tag definito dall'utente

Tramite il comando AWS CLI describe-services abbiamo confermato che i tag del servizio non venivano propagati.

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

Analizzando i log di CloudTrail relativi all'evento CreateService, abbiamo constatato che il parametro per propagare i tag dal servizio alle task non era impostato.

Log di CloudTrail che evidenzia la mancata propagazione del tag del servizio

Quando si invoca l'API CreateService, si specificano parametri come la task definition, il numero desiderato di task, il nome del servizio e, facoltativamente, dettagli su load balancing, service discovery e altro ancora.

Il parametro --propagate-tags stabilisce se propagare i tag dalla task definition o dal servizio alla task. Se non viene indicato alcun valore, i tag non vengono propagati. Il valore di default è NONE. La propagazione dei tag alla task può avvenire solo durante la sua creazione.

Dal log di CloudTrail emerge che, al momento della creazione del servizio ECS, il valore di default non è stato modificato. Di conseguenza, quando il servizio ha avviato le task, i suoi tag non si sono propagati.

Per impostazione predefinita, creando un servizio ECS dalla console, l'opzione attiva è quella di non propagare i tag del servizio alle task.

Per default, il servizio ECS non propaga i tag

In fase di configurazione del servizio, se si desidera che i tag del servizio vengano applicati anche alle task, occorre selezionare l'opzione apposita dal menu a discesa, scegliendo nello specifico la propagazione dei tag dal servizio.

Opzione di tagging in fase di creazione del servizio

Come risolvere il problema

Per propagare alle task i tag definiti dall'utente sul servizio è necessario un nuovo deployment. L'operazione, però, va eseguita dalla AWS CLI e non dalla AWS Console.

Il motivo è semplice: il comando CLI UpdateService permette di specificare il parametro — propagate-tags, che invece non è disponibile nella AWS Console. Da qui la necessità di ricorrere alla CLI.

Per aggiornare il servizio e forzare un nuovo deployment, in modo da propagare i tag dal servizio alle task, abbiamo utilizzato il comando seguente.

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

Verificando il log di CloudTrail per l'evento UpdateService, abbiamo riscontrato che il parametro propagateTags era ora impostato su SERVICE

Log di CloudTrail che mostra l'aggiornamento del servizio per propagare i tag alle task

Ulteriore conferma è arrivata eseguendo il comando CLI describe-services sul servizio

Controllando la task appena distribuita, vediamo che sia il tag gestito da ECS sia quello definito dall'utente sono stati propagati correttamente.

Task ECS con tag gestiti da ECS e tag definiti dall'utente.

Gli strumenti FinOps di DoiT

Risolto il problema di tagging del cliente, ci siamo dedicati a migliorarne il monitoraggio dei costi. Nel panorama cloud-native di oggi, gestire e ottimizzare le operazioni sul cloud può rivelarsi un'impresa complessa. È qui che entra in gioco DoiT, con una suite di strumenti FinOps pensati per semplificare e potenziare i processi di gestione del cloud.

Reports

Una delle funzionalità di punta è la sezione Reports di DoiT Cloud Analytics: uno strumento potente che offre una visualizzazione chiara della spesa cloud.

Il report filtra i costi AWS per le risorse ECS, sfruttando il tag definito dall'utente WebProject:CostTracking per un tracciamento dei costi preciso e accurato.

Questo livello di dettaglio permette ai nostri clienti di comprendere a fondo la propria spesa cloud, prendere decisioni consapevoli e ottimizzare con efficacia le operazioni sul cloud.

Alert

Noi di DoiT siamo consapevoli di quanto sia importante una gestione proattiva dei costi nelle operazioni cloud. Per questo abbiamo affiancato il cliente nella configurazione di alert di fatturazione, in modo da tenere sotto stretto controllo la spesa ECS.

Dalla console DoiT abbiamo creato un Alert per monitorare la spesa giornaliera dei costi ECS, definendo come condizione l'invio di una notifica via email al cliente nel caso in cui la spesa ECS avesse superato i 5 € al giorno.

L'alert è studiato per avvisare il cliente via email non appena la spesa giornaliera ECS raggiunge la soglia predefinita.

Notifica email generata dall'Alert

Grazie a questa configurazione il cliente può monitorare con efficacia i costi cloud e intervenire tempestivamente quando questi tendono a superare le aspettative.

È solo uno dei tanti modi in cui aiutiamo i nostri clienti a ottimizzare le operazioni sul cloud e a massimizzare il valore dei loro investimenti.

Se desidera scoprire come DoiT può aiutarla a gestire le sue risorse cloud, o se vuole approfondire i nostri prodotti e servizi FinOps, non esiti a contattarci.