Un compte AWS avec une seule personne se contrôle d'un coup d'œil à la facture. Avec quatre ou cinq personnes qui créent des choses, non. Chacune crée « une petite machine pour tester », « une copie au cas où », « une base de données un instant », et aucune ne voit ce que créent les autres. Personne ne dépense beaucoup ; toutes ensemble, la facture double en trois mois. Et quand elle arrive, impossible de savoir à qui appartient chaque euro.
La solution n'est pas d'interdire, mais de donner à chaque personne un chiffre par mois et de rendre visible ce qu'elle a déjà dépensé. C'est la même chose qu'une carte d'entreprise avec un plafond : personne ne le prend mal, et cela évite 90 % des mauvaises surprises.
AWS n'a pas de « budget par utilisateur » en tant que tel. On peut l'imiter avec trois pièces : une balise obligatoire avec le nom de la personne qui crée chaque chose, un budget (Budgets) filtré par cette balise et une politique IAM qui empêche de créer sans balise. Les étapes ci-dessous le montent ; les sections suivantes expliquent comment décider les chiffres et quoi compter.
Avant de commencer : ce que signifie chaque chose
- Balise
- Une paire nom = valeur que vous mettez sur chaque chose que vous créez dans AWS (par exemple Propietario = ana) pour ensuite grouper la dépense par elle.
- Balise de répartition des coûts
- Une balise que vous avez activée dans Facturation pour que Cost Explorer et Budgets puissent filtrer dessus. Sans l'activer, la balise existe mais ne sert pas pour les coûts.
- Budgets
- L'outil d'AWS pour fixer un chiffre par mois et recevoir un e-mail quand la dépense réelle ou prévue le dépasse. Il prévient ; il ne bloque pas.
- IAM
- Le système d'utilisateurs et de permissions d'AWS. Chaque personne a un utilisateur et des permissions qui disent ce qu'elle peut créer, voir ou supprimer.
- Politique
- Un texte au format JSON qui accorde ou refuse des permissions dans IAM. Une politique de refus l'emporte toujours sur n'importe quelle permission accordée.
- Cost Explorer
- L'écran d'AWS qui montre la dépense en graphiques et permet de la grouper par service, région, compte ou balise.
- Dépense réelle et prévision
- Ce qui a déjà été consommé ce mois-ci et ce qu'AWS calcule que vous aurez consommé en fin de mois au rythme actuel.
- Instantané
- Une copie d'un disque ou d'une machine. Facturé par Go et par mois tant qu'il existe ; c'est l'objet qui s'accumule le plus sans que personne ne le remarque.
- Bucket
- Un « dossier » S3 où l'on garde des fichiers. On paie l'espace et ce qui en est téléchargé.
Pas à pas
Choisissez la balise et dites-le à tout le monde
Choisissez un nom de balise et un format de valeur, et ne les changez jamais : par exemple
Propietarioavec le nom d'utilisateur IAM de chaque personne (Propietario = ana). Écrivez-le à un endroit que tout le monde voit. À partir de maintenant, tout ce qui se crée (machines, disques, instantanés, bases de données, buckets) porte cette balise.Activez la balise comme balise de répartition des coûts
Dans la console AWS, menu de votre compte, Facturation et gestion des coûts, rubrique Balises de répartition des coûts. Cherchez
Propietariodans la liste des balises définies par l'utilisateur et cliquez sur Activer. Tant qu'elle n'est pas activée, Cost Explorer et Budgets ne peuvent pas filtrer dessus. Elle met jusqu'à 24 heures à apparaître, et seule la dépense postérieure à l'activation est comptée, pas celle d'avant.Créez un budget par personne dans Budgets
Dans Facturation et gestion des coûts, entrez dans Budgets et cliquez sur Créer un budget. Choisissez Personnaliser, type Budget de coûts, période Mensuelle, montant fixe (par exemple
60dollars). Dans Filtres, choisissez la dimension Balise, cléPropietario, valeurana. Nommez-lepresupuesto-ana.Dans les alertes, ajoutez-en deux : quand la dépense réelle dépasse 80 % et quand la prévision dépasse 100 %, avec l'e-mail de cette personne et le vôtre. Répétez le budget pour chaque personne. Les deux premiers budgets du compte sont gratuits ; au-delà, chacun coûte quelques centimes par jour.
Empêchez de créer des machines sans balise
Dans IAM, Politiques, Créer une politique, éditeur JSON. Une politique de refus comme celle-ci empêche de créer une instance EC2 ou un volume qui ne porte pas la balise
Propietario:{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": ["ec2:RunInstances", "ec2:CreateVolume"], "Resource": ["arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*"], "Condition": { "Null": { "aws:RequestTag/Propietario": "true" } } }] }Attachez la politique au groupe d'utilisateurs. Avec une condition similaire (
StringNotEqualssuraws:RequestTag/Propietarioet la variable${aws:username}) vous pouvez imposer que la valeur soit le propre nom d'utilisateur, pour que personne n'attribue ses machines à quelqu'un d'autre. Chaque service a ses actions (rds:CreateDBInstance,lightsail:CreateInstances) ; commencez par EC2 et RDS, c'est là qu'est l'argent.Limitez les tailles qui peuvent être créées
Un budget prévient, mais ne freine pas une machine à 2 dollars de l'heure créée un vendredi après-midi. Ajoutez une autre politique de refus pour
ec2:RunInstancesavec la conditionec2:InstanceTypehors d'une liste (t3.micro,t3.small,t3.medium...). Qui a besoin de plus grand le demande. Dans RDS, l'équivalent estrds:DatabaseClass.Faites le point une fois par mois
Dans Cost Explorer, groupez par la balise
Propietario. Vous verrez une barre par personne et une autre, « Sans balise », avec tout ce qui a été créé en contournant la règle ou avant de l'instaurer. Cette barre est votre liste de tâches : baliser ou supprimer. Consacrez dix minutes au début de chaque mois et commentez les chiffres avec l'équipe. La transparence fait plus que n'importe quelle politique.
Pourquoi la dépense s'envole avec plusieurs personnes
Ce n'est ni de la mauvaise foi ni de la négligence ; c'est que la console AWS ne donne aucun signal de ce que coûte chaque clic. Créer une machine n'affiche pas le prix mensuel, seulement le type. Un instantané ne prévient pas qu'il est facturé pour toujours. Et chaque personne voit le compte comme « le sien » : elle ne sait pas qu'il y a déjà trois machines de test d'autres collègues qui font la même chose.
Les trois schémas qui coûtent le plus d'argent :
- Créer et oublier. Une machine pour un test de deux jours qui reste allumée trois mois. C'est, de loin, la cause numéro un.
- Les copies « au cas où ». Des instantanés avant chaque changement, que personne ne supprime ensuite.
- La taille par confort. Choisir une machine quatre fois plus grande que nécessaire « pour que ça tourne bien », sans savoir qu'elle coûte quatre fois plus.
Comment fixer le chiffre
Partez de ce qui se dépense déjà. Regardez dans Cost Explorer les trois derniers mois et répartissez-les mentalement par personne (s'il n'y a pas de balises, demandez). En général, une ou deux personnes concentrent presque toute la dépense légitime (production) et le reste est du test et du développement.
Séparez deux choses : le partagé (les serveurs de production, la base de données de l'entreprise) et le personnel (ce que chacun crée pour son travail). Le budget par utilisateur ne s'applique qu'au second. Pour une personne en développement, un chiffre raisonnable se situe entre 30 et 100 dollars par mois : de quoi faire tourner une ou deux petites machines aux heures de bureau et quelques instantanés. Pour quelqu'un qui ne fait que consulter, zéro.
Fixez le chiffre un peu au-dessus de ce que dépense aujourd'hui, de façon raisonnable, la personne qui dépense le plus, et baissez-le au bout de deux mois s'il en reste.
Quoi compter dans le budget de chaque personne
Tout ce que cette personne crée et qui a un coût récurrent :
- Machines EC2 et Lightsail, à l'heure ou au forfait mensuel. Rappelez-vous que dans Lightsail la machine arrêtée est facturée.
- Disques de ces machines, y compris ceux qui restent orphelins quand on les supprime.
- Bases de données RDS et Lightsail, qui sont souvent l'objet le plus cher qu'une personne crée.
- Instantanés, par Go et par mois tant qu'ils existent.
- Buckets S3 : l'espace et, surtout, ce qui en est téléchargé.
- IP réservées et non associées.
Ce qu'il n'est pas nécessaire de compter au début : le transfert de données, les journaux CloudWatch, les requêtes DNS. Ils sont petits et difficiles à attribuer. Concentrez-vous sur ce qui se crée d'un bouton et s'oublie.
Un piège : Budgets compte la dépense cumulée du mois. Ce que quelqu'un a créé le 2 et supprimé le 3 continue de compter même si l'objet n'existe plus.
Ce qu'AWS ne peut pas faire
Il vaut mieux être honnête sur les limites du montage :
- Budgets prévient, ne bloque pas. Il existe des « actions de budget » qui appliquent une politique de refus au dépassement d'un seuil, mais elles sont grossières et arrivent tard : la dépense est déjà faite.
- Les balises dépendent de la bonne volonté des gens. La politique IAM les impose dans EC2 et RDS, mais tous les services ne permettent pas de baliser au moment de la création, et les instantanés automatiques n'héritent pas de la balise du disque.
- Lightsail balise, mais sa console n'oblige pas, et ce qui a été créé avant l'activation de la balise de coût n'est pas compté.
- Cela demande de l'entretien : chaque nouvelle personne, c'est un budget, une valeur de balise et un point mensuel ; chaque départ, c'est nettoyer ce qui lui appartenait.
Malgré tout, c'est bien mieux que rien.
Ce qui peut mal tourner
Le budget n'affiche aucune dépense
C'est presque toujours parce que la balise n'est pas activée comme balise de répartition des coûts, ou que vous l'avez activée il y a moins d'un jour. Vérifiez-le dans Facturation. Et rappelez-vous qu'elle ne compte qu'à partir de l'activation : la dépense des machines balisées la semaine dernière n'apparaît pas rétroactivement.
Il y a beaucoup de dépense « Sans balise »
C'est normal le premier mois. Groupez dans Cost Explorer par service à l'intérieur de « Sans balise » pour voir de quoi il s'agit : en général des machines anciennes, des disques orphelins et des instantanés. Balisez-les (dans EC2 vous pouvez en sélectionner plusieurs et ajouter des balises d'un coup) ou supprimez-les. Si la dépense sans balise est de la production partagée, donnez-lui la balise Propietario = compartido et c'est réglé.
Quelqu'un ne peut pas créer une machine
La politique de refus fonctionne : il essaie de créer sans balise ou avec une taille non autorisée. Dans la console, l'erreur dit « not authorized ... with an explicit deny ». Qu'il ajoute la balise à l'étape de création (rubrique Balises de l'assistant EC2) ou choisisse une taille de la liste. S'il a vraiment besoin de plus grand, ajoutez-la à la liste de la politique.
Les instantanés automatiques ne portent pas de balise
Les instantanés créés par AWS Backup ou Data Lifecycle Manager héritent des balises si vous le configurez dans la règle ; les automatiques de Lightsail ne peuvent pas être balisés. Comptez cette dépense comme partagée ou calculez à part ce qu'ils représentent (ils sont faciles à repérer dans la facture, comme « snapshot »).
Dans Simplio
Dans Simplio, le budget par utilisateur est une case dans la fiche de chaque personne : un chiffre par mois. Tout ce que cette personne crée depuis Simplio (machines, bases de données, instantanés, buckets) est inscrit à son nom avec son coût approximatif et, si elle le supprime le même mois, il lui est déduit. Chaque utilisateur voit combien il a déjà dépensé et combien il lui reste avant de créer quoi que ce soit, et reçoit un avis par e-mail en approchant du plafond ; l'administrateur voit toutes les personnes dans l'écran Coûts. Pas besoin de baliser, d'activer quoi que ce soit dans Facturation ni d'écrire des politiques.
Combiné aux permissions par utilisateur et par objet (qui peut créer, qui peut seulement voir, qui peut supprimer quoi) et au journal d'activité, vous savez à tout moment qui a créé chaque chose et quand.
La même chose, dans AWS et dans Simplio
| Dans la console AWS | Dans Simplio | |
|---|---|---|
| Donner un plafond mensuel à chaque personne | Balise obligatoire, l'activer dans Facturation, un budget par personne, politiques IAM : 6 étapes et de l'entretien | Un chiffre dans la fiche de chaque utilisateur |
| Savoir ce que chacun a créé | Cost Explorer par balise, seulement ce qui est balisé et depuis l'activation | Ce qui est créé depuis Simplio est inscrit au nom de son créateur, avec son coût approximatif |
| Empêcher d'en créer trop | Politiques de refus par taille de machine | Permissions par utilisateur et par objet, et avis en approchant du budget |