Tableaux de bord

Exemple : dépenses par service

Activez les métriques de facturation, puis ajoutez les préréglages de dépenses de CloudPeek ou créez un tableau de bord CloudWatch de vos plus gros coûts du mois. Le tableau de bord se crée dans la console AWS, ou en un seul déploiement avec CloudFormation ou Terraform.

Mis à jour le 19 octobre 2026

Vous préférez ne rien configurer ? Utilisez les préréglages de dépenses

Si vous voulez seulement voir votre facture AWS sur votre écran d’accueil, inutile de créer un tableau de bord. Activez les métriques de facturation (étape 1), puis ajoutez les préréglages de dépenses de CloudPeek avec Créer un widget › Préréglage. À eux tous, ils affichent tout ce qu’affiche le tableau de bord ci-dessous :

Widget de tableau de bordPréréglageDifférence
Top 5 services by spendDépenses par serviceTous les services, du plus coûteux au moins coûteux, ceux qui ne tiennent pas étant regroupés dans Autres. Son total est la somme des services, et non votre facture complète.
Dépenses du mois en coursDépenses du mois en coursIdentique.
Last 7 days' spendDépenses quotidiennes par compteIdentique, avec chaque compte empilé dans sa colonne dans un compte de gestion AWS Organizations ; il peut aussi afficher 2 semaines, 30 jours ou le mois en cours.
Top 5 services' share of spendPart des dépensesTous les services, pas seulement cinq.

Les préréglages ajoutent aussi Prévision de fin de mois, Dépenses et prévision, Dépenses quotidiennes par service, Tableau des dépenses quotidiennes et Tendance des dépenses : voir Préréglages. Créez plutôt le tableau de bord si vous voulez un top 5 fixe, votre facture complète comme total, les mêmes widgets dans la console CloudWatch, ou un tableau de bord géré dans CloudFormation ou Terraform.

Ce que vous allez créer

Vous allez créer un tableau de bord CloudWatch nommé CloudPeek-Spend comportant quatre widgets. Le premier est un graphique à barres des cinq services qui vous ont le plus coûté depuis le début du mois, trouvés automatiquement, avec le total de votre compte. Le deuxième est ce total du mois en cours, avec un mini-graphique de la semaine écoulée. Le troisième montre ce que vous avez dépensé chacun des 7 derniers jours, une colonne par jour, et le quatrième est un graphique en secteurs de la répartition des dépenses entre vos cinq principaux services. Dans CloudPeek, ils se présentent ainsi :

Dans le graphique à barres, les services qui ne tiennent pas sont regroupés dans Autres.

Comptez environ 15 minutes dans la console AWS, ou un seul déploiement avec CloudFormation ou Terraform. Choisissez votre outil dans les onglets de chaque étape.

Avant de commencer

  • Un compte AWS, et un accès capable de modifier les préférences de facturation et de créer des tableaux de bord CloudWatch ainsi que des utilisateurs et des politiques IAM, comme celui d’un administrateur. Si vos comptes font partie d’AWS Organizations, utilisez le compte de gestion pour voir les dépenses de toute l’organisation.
  • CloudPeek sur votre iPhone, votre iPad ou votre téléphone Android.

Ce que ça coûte. Les métriques de facturation sont gratuites. L’offre gratuite de CloudWatch comprend trois tableaux de bord ; au-delà, chaque tableau de bord coûte 3 USD par mois. Les actualisations de CloudPeek appellent GetMetricData, qu’AWS facture 0,01 USD pour 1 000 métriques. AWS ne met à jour les métriques de facturation que quelques fois par jour, si bien que ces widgets s’actualisent au plus toutes les 3 heures : avec les quatre épinglés, cela fait environ 15 métriques par actualisation, soit environ 0,04 USD par mois. Réglages (Paramètres sur Android) en donne une estimation pour vos propres widgets, sous Actualiser. Voir Tarification de CloudWatch.

1. Activer les métriques de facturation

AWS n’envoie vos frais estimés à CloudWatch qu’une fois l’option activée. Cela se fait une fois par compte, dans la console : CloudFormation, Terraform et l’AWS CLI ne peuvent pas modifier ce paramètre.

  1. Connectez-vous à la console AWS et ouvrez Billing and Cost Management › Préférences de facturation.
  2. Sous Préférences d’alerte, choisissez Modifier.
  3. Sélectionnez Recevoir les alertes de facturation CloudWatch et enregistrez la modification.

Les frais estimés sont publiés dans la région USA Est (Virginie du Nord), us-east-1, plusieurs fois par jour. Ils sont cumulés depuis le début du mois, et reviennent donc à zéro chaque mois. Les premières données peuvent mettre quelques heures à apparaître. Si vous n’êtes pas connecté en tant qu’utilisateur root, le compte doit aussi autoriser l’accès IAM aux informations de facturation (sous Compte › Accès des utilisateurs et rôles IAM aux informations de facturation).

Tant que les premières données ne sont pas arrivées, le tableau de bord que vous allez créer affiche Aucune donnée disponible, et les widgets de dépenses de CloudPeek affichent « Activez les alertes de facturation CloudWatch dans la console Billing. Les dépenses apparaissent en moins d’une journée. » (« Activez les alertes de facturation CloudWatch. » sur un petit widget). Pour vérifier si les métriques de facturation ont commencé à arriver, ouvrez CloudWatch dans us-east-1 et choisissez Métriques › Toutes les métriques : un espace de noms Billing apparaît dès que c’est le cas. Metrics Explorer ne liste pas les métriques de facturation : regardez donc sous Toutes les métriques.

Dans AWS Organizations, les métriques de facturation se trouvent uniquement dans le compte de gestion, qui contient les frais de tous les comptes, ventilés par compte (Dépenses par compte). Les autres comptes n’en ont aucune : activez donc les alertes de facturation dans le compte de gestion et ajoutez-le à CloudPeek pour les widgets de dépenses. Dans un compte auquel vous vous êtes connecté avec IAM Identity Center et qui n’est pas le compte de gestion, les widgets de dépenses de CloudPeek affichent « Les dépenses de ce compte se trouvent dans le compte de gestion de votre organisation. » (« Les dépenses sont dans votre compte de gestion. » sur un petit widget). CloudPeek reconnaît le compte de gestion à ce qu’il peut lister les comptes de l’organisation (organizations:ListAccounts, dans la politique de CloudPeek) : accordez donc cette autorisation à l’accès du compte de gestion.

2. Créer le tableau de bord

  1. Ouvrez la console CloudWatch dans us-east-1 et choisissez Créer un tableau de bord.
  2. Nommez-le CloudPeek-Spend et choisissez Créer un tableau de bord. Si la fenêtre Ajouter un widget s’ouvre, fermez-la.
  3. Choisissez Actions › Afficher/modifier la source, remplacez la source par le JSON du tableau de bord et choisissez Mettre à jour.
  4. Choisissez Enregistrer.

Téléchargez spend-by-service.json (il est reproduit en entier ci-dessous), puis exécutez :

Shell
aws cloudwatch put-dashboard \
  --region us-east-1 \
  --dashboard-name CloudPeek-Spend \
  --dashboard-body file://spend-by-service.json

Un seul modèle crée le tableau de bord, ainsi que la politique CloudPeek et l’utilisateur IAM de l’étape 3. Voici la ressource du tableau de bord :

cloudpeek-setup.yaml (tableau de bord)Télécharger
  Dashboard:
    Type: AWS::CloudWatch::Dashboard
    Properties:
      DashboardName: !Ref DashboardName
      DashboardBody: !Sub |
          {
            "start": "-P7D",
            "widgets": [
              {
                "type": "metric",
                "x": 0,
                "y": 0,
                "width": 12,
                "height": 8,
                "properties": {
                  "title": "Top ${TopServices} services by spend",
                  "view": "bar",
                  "region": "us-east-1",
                  "start": "-P1D",
                  "stat": "Maximum",
                  "period": 21600,
                  "metrics": [
                    [ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "label": "Total" } ],
                    [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${Currency}\"', 'Maximum', 21600), MAX, DESC, ${TopServices})", "label": "${!PROP('Dim.ServiceName')}", "id": "top" } ]
                  ]
                }
              },
              {
                "type": "metric",
                "x": 12,
                "y": 0,
                "width": 6,
                "height": 8,
                "properties": {
                  "title": "Month-to-date spend",
                  "view": "singleValue",
                  "region": "us-east-1",
                  "stat": "Maximum",
                  "period": 21600,
                  "sparkline": true,
                  "metrics": [
                    [ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "label": "Total" } ]
                  ]
                }
              },
              {
                "type": "metric",
                "x": 18,
                "y": 0,
                "width": 6,
                "height": 8,
                "properties": {
                  "title": "Last 7 days' spend",
                  "view": "timeSeries",
                  "region": "us-east-1",
                  "start": "-P7D",
                  "stat": "Maximum",
                  "period": 86400,
                  "yAxis": { "left": { "min": 0 } },
                  "metrics": [
                    [ { "expression": "IF(DIFF(m1) < 0, m1, DIFF(m1))", "label": "Spend", "id": "daily" } ],
                    [ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "id": "m1", "visible": false } ]
                  ]
                }
              },
              {
                "type": "metric",
                "x": 0,
                "y": 8,
                "width": 12,
                "height": 8,
                "properties": {
                  "title": "Top ${TopServices} services' share of spend",
                  "view": "pie",
                  "region": "us-east-1",
                  "start": "-P1D",
                  "stat": "Maximum",
                  "period": 21600,
                  "metrics": [
                    [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${Currency}\"', 'Maximum', 21600), MAX, DESC, ${TopServices})", "label": "${!PROP('Dim.ServiceName')}", "id": "share" } ]
                  ]
                }
              }
            ]
          }

Le corps est le JSON du tableau de bord ci-dessous, où ${TopServices} et ${Currency} prennent les valeurs des paramètres de la pile. ${!PROP(…)} empêche CloudFormation de prendre le libellé dynamique pour l’une de ses propres variables.

Shell
aws cloudformation deploy \
  --region us-east-1 \
  --stack-name CloudPeek \
  --template-file cloudpeek-setup.yaml \
  --capabilities CAPABILITY_NAMED_IAM

Vous pouvez aussi, dans la console CloudFormation dans us-east-1, choisir Charger un fichier de modèle, nommer la pile CloudPeek, vérifier les paramètres et cocher Je reconnais qu’AWS CloudFormation est susceptible de créer des ressources IAM avec des noms personnalisés avant de soumettre. Quand la pile atteint l’état CREATE_COMPLETE, son onglet Sorties contient un lien vers le tableau de bord.

ParamètreValeur par défautUtilité
DashboardNameCloudPeek-SpendLe nom du tableau de bord.
TopServices5Le nombre de vos plus gros services à représenter, de 1 à 20.
CurrencyUSDLa devise de votre facture.
PolicyNameCloudPeekLe nom de la politique.
CreateUsertrueMettez false si vous vous connecterez avec IAM Identity Center.
UserNamecloudpeekLe nom de l’utilisateur IAM.

Pour les modifier, ajoutez --parameter-overrides, par exemple --parameter-overrides TopServices=10 CreateUser=false.

Une seule configuration crée le tableau de bord, ainsi que la politique CloudPeek et l’utilisateur IAM de l’étape 3. Voici la ressource du tableau de bord :

cloudpeek-setup.tf (tableau de bord)Télécharger
resource "aws_cloudwatch_dashboard" "spend" {
  dashboard_name = var.dashboard_name
  dashboard_body = jsonencode({
    start = "-P7D"
    widgets = [
      {
        type   = "metric"
        x      = 0
        y      = 0
        width  = 12
        height = 8
        properties = {
          title  = "Top ${var.top_services} services by spend"
          view   = "bar"
          region = "us-east-1"
          start  = "-P1D"
          stat   = "Maximum"
          period = 21600
          metrics = [
            ["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { label = "Total" }],
            [{
              expression = "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${var.currency}\"', 'Maximum', 21600), MAX, DESC, ${var.top_services})"
              label      = "$${PROP('Dim.ServiceName')}"
              id         = "top"
            }],
          ]
        }
      },
      {
        type   = "metric"
        x      = 12
        y      = 0
        width  = 6
        height = 8
        properties = {
          title     = "Month-to-date spend"
          view      = "singleValue"
          region    = "us-east-1"
          stat      = "Maximum"
          period    = 21600
          sparkline = true
          metrics = [
            ["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { label = "Total" }],
          ]
        }
      },
      {
        type   = "metric"
        x      = 18
        y      = 0
        width  = 6
        height = 8
        properties = {
          title  = "Last 7 days' spend"
          view   = "timeSeries"
          region = "us-east-1"
          start  = "-P7D"
          stat   = "Maximum"
          period = 86400
          yAxis  = { left = { min = 0 } }
          metrics = [
            [{ expression = "IF(DIFF(m1) < 0, m1, DIFF(m1))", label = "Spend", id = "daily" }],
            ["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { id = "m1", visible = false }],
          ]
        }
      },
      {
        type   = "metric"
        x      = 0
        y      = 8
        width  = 12
        height = 8
        properties = {
          title  = "Top ${var.top_services} services' share of spend"
          view   = "pie"
          region = "us-east-1"
          start  = "-P1D"
          stat   = "Maximum"
          period = 21600
          metrics = [
            [{
              expression = "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${var.currency}\"', 'Maximum', 21600), MAX, DESC, ${var.top_services})"
              label      = "$${PROP('Dim.ServiceName')}"
              id         = "share"
            }],
          ]
        }
      },
    ]
  })
}

Elle produit exactement le JSON du tableau de bord ci-dessous avec jsonencode. $${PROP(…)} empêche Terraform de traiter le libellé dynamique comme une interpolation. Enregistrez le fichier dans un répertoire vide et exécutez :

Shell
terraform init
terraform apply
VariableValeur par défautUtilité
dashboard_nameCloudPeek-SpendLe nom du tableau de bord.
top_services5Le nombre de vos plus gros services à représenter, de 1 à 20.
currencyUSDLa devise de votre facture.
policy_nameCloudPeekLe nom de la politique.
create_usertrueMettez false si vous vous connecterez avec IAM Identity Center.
user_namecloudpeekLe nom de l’utilisateur IAM.

Pour les modifier, passez -var, par exemple terraform apply -var top_services=10 -var create_user=false. Pour ajouter le tableau de bord à une configuration existante, copiez les ressources sans les blocs terraform et provider.

3. Créer un accès pour CloudPeek

Suivez Créer un accès pour CloudPeek dans Premiers pas. Cette section crée la politique CloudPeek et soit un utilisateur IAM avec une clé d’accès, soit un ensemble d’autorisations IAM Identity Center.

Suivez Créer un accès pour CloudPeek dans Premiers pas, qui donne les commandes AWS CLI pour un utilisateur IAM ou un ensemble d’autorisations IAM Identity Center.

La pile de l’étape 2 a déjà créé la politique CloudPeek et, sauf si vous avez mis CreateUser à false, l’utilisateur cloudpeek. Créez la clé d’accès de l’utilisateur. La clé secrète n’est affichée qu’une seule fois :

Shell
aws iam create-access-key --user-name cloudpeek

Pour IAM Identity Center, attachez CloudPeek à un ensemble d’autorisations en tant que politique gérée par le client (voir Option B).

La configuration de l’étape 2 a déjà créé la politique CloudPeek et, sauf si vous avez mis create_user à false, l’utilisateur cloudpeek. Créez la clé d’accès de l’utilisateur en dehors de Terraform, pour que la clé secrète reste hors de votre état. Elle n’est affichée qu’une seule fois :

Shell
aws iam create-access-key --user-name cloudpeek

Pour IAM Identity Center, attachez CloudPeek à un ensemble d’autorisations en tant que politique gérée par le client (voir Option B).

4. Ajouter le compte et épingler les widgets

  1. Dans CloudPeek, ajoutez le compte dans l’onglet Comptes avec la clé d’accès ou IAM Identity Center (voir Premiers pas, étape 2). N’importe quelle région par défaut convient : les widgets de dépenses lisent toujours us-east-1.
  2. Dans l’onglet Comptes, ouvrez le compte, puis le tableau de bord CloudPeek-Spend, et touchez Épingler sur les widgets souhaités : Top 5 services by spend, Month-to-date spend, Last 7 days' spend et Top 5 services' share of spend.
  3. Ajoutez CloudPeek à votre écran d’accueil une fois par widget, et choisissez celui que chacun affiche (voir Choisir le widget affiché). La taille moyenne convient aux graphiques à barres et en secteurs ; la petite, au total du mois en cours et aux 7 derniers jours.

Résultat : une fois les métriques de facturation arrivées, le graphique à barres liste vos plus gros services du mois, avec le total au-dessus. D’ici là, les widgets affichent Aucune donnée pour cette plage de temps.

Sur iPhone et iPad, le total fonctionne aussi très bien sur l’écran verrouillé, où les widgets affichent la dernière valeur.

Fonctionnement du tableau de bord

Quel que soit l’outil utilisé, voici le tableau de bord que vous obtenez :

spend-by-service.jsonTélécharger
{
  "start": "-P7D",
  "widgets": [
    {
      "type": "metric",
      "x": 0,
      "y": 0,
      "width": 12,
      "height": 8,
      "properties": {
        "title": "Top 5 services by spend",
        "view": "bar",
        "region": "us-east-1",
        "start": "-P1D",
        "stat": "Maximum",
        "period": 21600,
        "metrics": [
          [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "label": "Total" } ],
          [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "label": "${PROP('Dim.ServiceName')}", "id": "top" } ]
        ]
      }
    },
    {
      "type": "metric",
      "x": 12,
      "y": 0,
      "width": 6,
      "height": 8,
      "properties": {
        "title": "Month-to-date spend",
        "view": "singleValue",
        "region": "us-east-1",
        "stat": "Maximum",
        "period": 21600,
        "sparkline": true,
        "metrics": [
          [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "label": "Total" } ]
        ]
      }
    },
    {
      "type": "metric",
      "x": 18,
      "y": 0,
      "width": 6,
      "height": 8,
      "properties": {
        "title": "Last 7 days' spend",
        "view": "timeSeries",
        "region": "us-east-1",
        "start": "-P7D",
        "stat": "Maximum",
        "period": 86400,
        "yAxis": { "left": { "min": 0 } },
        "metrics": [
          [ { "expression": "IF(DIFF(m1) < 0, m1, DIFF(m1))", "label": "Spend", "id": "daily" } ],
          [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "id": "m1", "visible": false } ]
        ]
      }
    },
    {
      "type": "metric",
      "x": 0,
      "y": 8,
      "width": 12,
      "height": 8,
      "properties": {
        "title": "Top 5 services' share of spend",
        "view": "pie",
        "region": "us-east-1",
        "start": "-P1D",
        "stat": "Maximum",
        "period": 21600,
        "metrics": [
          [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "label": "${PROP('Dim.ServiceName')}", "id": "share" } ]
        ]
      }
    }
  ]
}
  • La ligne d’expression trouve vos principaux services pour vous. SEARCH trouve les frais estimés de chaque service, et SORT(…, MAX, DESC, 5) garde les cinq plus importants. Les services que vous commencez à utiliser apparaissent d’eux-mêmes. Pour en afficher plus ou moins, modifiez le 5 à la fin des expressions des graphiques à barres et en secteurs (ou le paramètre TopServices, ou la variable top_services).
  • Le libellé ${PROP('Dim.ServiceName')} donne à chaque barre le nom de son service, par exemple AmazonEC2 ou AWSLambda. CloudPeek affiche le nom court (EC2, Lambda), les classe du plus élevé au plus faible et regroupe ceux qui ne tiennent pas dans Autres.
  • La ligne qui n’a qu’une dimension Currency correspond aux frais de tout votre compte depuis le début du mois. CloudPeek l’affiche comme Total du widget plutôt que comme une barre, si bien que les services hors du top 5 sont tout de même comptés. Dans la console CloudWatch, elle apparaît comme une barre de plus.
  • Les frais sont cumulés depuis le début du mois : les graphiques à barres et en secteurs ne regardent donc que le dernier jour ("start": "-P1D"). Ainsi, le classement suit les frais de ce mois-ci plutôt que ceux du mois dernier. Le total du mois en cours utilise la semaine du tableau de bord pour son mini-graphique.
  • Les 7 derniers jours proviennent de ces mêmes frais du mois en cours, lus une fois par jour ("period": 86400) dans la ligne masquée m1. DIFF(m1) donne leur hausse de chaque jour, et le jour où ils reviennent à zéro au début d’un mois, IF(… < 0, m1, …) prend à la place les frais du nouveau mois.
  • CloudPeek dessine chacun de ces jours sous forme de colonne, à partir de minuit dans votre fuseau horaire, avec la journée en cours à droite. La console CloudWatch n’a pas ce type de graphique : elle dessine donc les mêmes jours sous forme de ligne.
  • Si votre facture n’est pas en dollars américains, remplacez chaque USD des lignes et des expressions par le code de votre devise.
  • Le graphique en secteurs utilise la même expression que le graphique à barres, sans la ligne Total : ses secteurs représentent donc la part de chacun de vos cinq principaux services dans leur coût cumulé. CloudPeek affiche cette somme au centre.
  • Pour inclure tout le reste dans le graphique en secteurs sous forme d’un secteur Autres, avec les frais de tout votre compte au centre, copiez-y la ligne Total du graphique à barres. La console CloudWatch dessine alors le Total comme un secteur de plus.

Pour voir les frais de chaque service, ouvrez CloudWatch dans us-east-1 et choisissez Toutes les métriques › Billing › Par service.

Pour voir les dépenses quotidiennes de chaque service, empilées dans une colonne par jour, ajoutez le préréglage Dépenses quotidiennes par service (voir Préréglages de dépenses), ou décrivez-le dans un widget IA, par exemple « Dépenses quotidiennes par service sur les 7 derniers jours, empilées ». Les frais de chaque service sont eux aussi cumulés depuis le début du mois : ces widgets calculent donc la hausse de chacun chaque jour, comme DIFF(m1) le fait pour le total.

Pour lister les dépenses des 7 derniers jours dans un tableau, une ligne par jour, de la plus récente à la plus ancienne, ajoutez le préréglage Tableau des dépenses quotidiennes, ou décrivez-le dans un widget IA, par exemple « Un tableau des dépenses des 7 derniers jours, une ligne par jour ». Sur un tableau de bord, cela correspond aux lignes DIFF(m1) ci-dessus dans un widget avec "view": "table" et "table": {"layout": "vertical"}.

Dépenses par compte

Si vos comptes font partie d’AWS Organizations, les métriques de facturation du compte de gestion ventilent aussi les frais par compte, avec une dimension LinkedAccount. Pour représenter vos cinq comptes les plus coûteux du mois plutôt que vos plus gros services, utilisez cette ligne d’expression dans le graphique à barres ou en secteurs, à la place de celle des services :

Ligne d’expression
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,LinkedAccount} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "id": "accounts" } ]

Ou décrivez ce que vous voulez dans un widget IA, par exemple « Dépenses par compte ce mois-ci », ou « Graphique à barres empilées des dépenses SQS de chaque compte sur les 7 derniers jours » pour un seul service. Le préréglage Dépenses quotidiennes par compte empile déjà les dépenses de chaque compte dans une colonne par jour : voir Préréglages de dépenses.

CloudWatch ne connaît chaque compte que par son ID à 12 chiffres. CloudPeek affiche plutôt le nom du compte, d’après la première de ces sources qui le nomme :

  • AWS Organizations, qui nomme chaque compte de l’organisation. Il faut pour cela organizations:ListAccounts, inclus dans la politique de CloudPeek, et seul le compte de gestion (ou un compte administrateur délégué) obtient une réponse. CloudPeek l’interroge une fois par jour.
  • IAM Identity Center, si vous vous êtes connecté avec : le nom des comptes auxquels il vous permet de vous connecter.
  • Votre onglet Comptes : le nom que vous avez donné à un compte que vous avez ajouté.

Un compte qu’aucune de ces sources ne nomme garde son ID. Si AWS Organizations refuse, CloudPeek redemande au bout de six heures, ou dès que vous actualisez le widget.

Suppression

Dans la console CloudWatch dans us-east-1, ouvrez Tableaux de bord, sélectionnez CloudPeek-Spend et choisissez Supprimer. Pour supprimer aussi l’accès de CloudPeek, supprimez l’utilisateur cloudpeek et la politique CloudPeek dans la console IAM.

Shell
aws cloudwatch delete-dashboards --region us-east-1 --dashboard-names CloudPeek-Spend

CloudFormation ne peut pas supprimer un utilisateur qui a encore une clé d’accès, ni une politique encore utilisée par un élément extérieur à la pile. Supprimez d’abord la clé d’accès de l’utilisateur et détachez la politique de tout ensemble d’autorisations, puis supprimez la pile :

Shell
aws iam list-access-keys --user-name cloudpeek
aws iam delete-access-key --user-name cloudpeek --access-key-id <access-key-id>
aws cloudformation delete-stack --region us-east-1 --stack-name CloudPeek

IAM refuse de supprimer un utilisateur qui a encore une clé d’accès, ou une politique encore attachée ailleurs. Supprimez d’abord la clé d’accès de l’utilisateur et détachez la politique de tout ensemble d’autorisations, puis lancez la destruction :

Shell
aws iam list-access-keys --user-name cloudpeek
aws iam delete-access-key --user-name cloudpeek --access-key-id <access-key-id>
terraform destroy

Dépannage

Les widgets sont vides, ou le tableau de bord affiche « Aucune donnée disponible »

Les métriques de facturation n’arrivent pas encore dans CloudWatch, et les widgets de CloudPeek affichent « Activez les alertes de facturation CloudWatch dans la console Billing. Les dépenses apparaissent en moins d’une journée. » Vérifiez qu’elles sont activées (étape 1) et laissez-leur quelques heures. Cherchez ensuite l’espace de noms Billing sous Toutes les métriques dans us-east-1 (Metrics Explorer ne liste pas les métriques de facturation). Dans AWS Organizations, configurez cela dans le compte de gestion, qui voit les frais de toute l’organisation : dans un autre de ses comptes, les widgets affichent « Les dépenses de ce compte se trouvent dans le compte de gestion de votre organisation. »

Les comptes s’affichent sous forme de numéros

CloudPeek n’a pas trouvé leur nom. Dans le compte de gestion, ajoutez organizations:ListAccounts à l’accès de CloudPeek, ou déployez le modèle mis à jour depuis Premiers pas, puis actualisez le widget. Voir Dépenses par compte.

Un service manque

Il ne fait pas partie de vos cinq plus gros services ce mois-ci. Pour en représenter davantage, augmentez le nombre à la fin de l’expression SORT (voir son fonctionnement). Ses frais sont déjà inclus dans le Total.

Le Total dépasse la somme des barres

C’est normal. Le Total est votre facture complète depuis le début du mois, y compris les services hors de votre top 5.

Autre chose

Consultez Dépannage, ou écrivez à support@cloudpeek.app. Ne nous envoyez jamais votre clé d’accès secrète.