Comment obtenir des informations de facturation pour Amazon Redshift Serverless ?

Lecture de 4 minute(s)
0

Je souhaite interroger mon utilisation des unités de traitement Amazon Redshift (RPU) afin de pouvoir calculer les informations de facturation pour Redshift Serverless.

Brève description

Vous engagez des coûts en fonction des charges de travail que vous exécutez. Les charges de travail sont mesurées en heures RPU et sont comptabilisées à la seconde avec une charge minimale d’une minute. Pour plus d’informations, consultez la section Facturation pour Amazon Redshift Serverless.

Résolution

Pour obtenir des informations sur vos coûts, utilisez un outil client ou un éditeur de requêtes connecté à votre compte Amazon Redshift Serverless pour exécuter les requêtes suivantes. Pour plus d'informations, consultez la section Connexion à Amazon Redshift Serverless.

Remarque : dans les requêtes suivantes, remplacez AWS_REGION_PRICE par le prix par heure RPU pour votre région AWS. Pour plus d’informations sur les coûts du RPU, consultez Amazon Redshift Serverless sur la page de tarification d'Amazon Redshift.

Les résultats des coûts que vous recevez des requêtes suivantes sont des approximations. Les résultats peuvent varier par rapport au coût Amazon Redshift sans serveur affiché dans la console de facturation AWS.

Coût par jour

Pour déterminer le coût que vous avez engagé chaque jour au cours des 7 derniers jours, exécutez la requête suivante :

SELECT date_trunc('d',start_time) "Day",
    (
        sum(charged_seconds)/3600::double precision
    ) * AWS_REGION_PRICE as cost_incurred
FROM   sys_serverless_usage
GROUP  BY 1
ORDER  BY 1;

Remarque : Amazon Redshift sans serveur ne stocke que 5 à 7 jours de données historiques. Il est possible que vous ne puissiez pas récupérer des données datant de plus de 7 jours.

Exemple de résultat :

day                 |    cost_incurred($)
--------------------+--------------------------
2024-05-27 00:00:00 |    1.536    
2024-05-29 00:00:00 |    59.903999999999996    
2024-05-30 00:00:00 |    13.824    
2024-05-31 00:00:00 |    0.768    

Utilisation du RPU et coût pour un jour donné

Pour vérifier l’utilisation de la RPU et le coût total de la veille, exécutez la requête suivante. Pour interroger d'autres jours, remplacez le -1 dans dateadd(day,-1,sysdate) par un autre nombre négatif :

SELECT date_trunc('d',start_time)  as "day",
       (
        sum(charged_seconds)/3600::double precision
       ) * <AWS_REGION_PRICE> as cost_incurred,
       min(compute_capacity) min_rpu,
       max(compute_capacity) max_rpu,
       avg(compute_capacity) avg_rpu,
       max(data_storage) as max_storage
FROM   sys_serverless_usage
WHERE "day" = date_trunc('d', dateadd(day,-1,sysdate))
GROUP  BY 1
ORDER  BY 1

Exemple de sortie : 

day                  | cost_incurred ($) |    min_rpu |  max_rpu  |     avg_rpu | max_storage
---------------------+-------------------+------------+-----------+-------------+-------------
2024-05-30 00:00:00  |    13.824         |    0       |  128      |    92.16    | 3166    

Utilisation du RPU et coût par requête

Pour obtenir l’utilisation et le coût approximatifs du RPU pour chaque requête que vous avez exécutée à une date précise, exécutez la requête suivante :

with
daily_cost as (
    select
        trunc(start_time) "YYY-MM-DD",
        max(compute_capacity) max_compute_capacity,
        (sum(charged_seconds) / 3600:: double precision) * <AWS_REGION_PRICE> as daily_cost
    from
        sys_serverless_usage
    group by
        1
),
daily_queries as (
    SELECT
        *,
        elapsed_time / total_time_for_day:: double precision as perc
    from
        (
            SELECT

                query_id,
                user_id,
                query_text,
                trunc(start_time) "Day",
                elapsed_time,
                sum(elapsed_time) over (partition by trunc(start_time)) total_time_for_day
            FROM
                sys_query_history
        )
)
select
    q.*,
    c.daily_cost * q.perc as query_cost,
    c.*
from
    daily_cost c
    join daily_queries q using ("Day") where Day ='<start_date>';

**Remarque :**Remplacez YYYY-MM-DD par la date précise à laquelle vous souhaitez interroger. La date doit être au format YYYY-MM-DD.

Exemple de sortie : 

query_id| user_id | day        | elapsed_time | total_time_for_day | perc                   | query_cost             | day        | max_compute_capacity |    daily_cost  | query_text
--------+---------+------------+--------------+--------------------+------------------------+------------------------+------------+----------------------+------------------+--------------------------------------+
5240721 | 101     | 2024-05-30 | 174646       | 22720291           | 0.00768678534971229    | 0.10921384624871222    | 2024-05-30 | 128                  | 14.208         | SELECT table_name as view_name, table_type, schema_name FROM SVV_ALL_TABLES WHERE database_name='dev' AND schema_name='lakeformation_schema' and table_type IN ('VIEW');

5240073 | 101     | 2024-05-30 | 765          | 22720291           | 0.00003367034339480951 | 0.00047838823895345354 | 2024-05-30 | 128                  | 14.208         | select oid, lanname from pg_language order by lanname asc

Important : la sortie est une approximation. La requête détermine le coût total encouru à la date et répartit le coût entre toutes les requêtes lancées en fonction du temps de requête écoulé.

Informations connexes

SYS_SERVERLESS_USAGE

SYS_QUERY_HISTORY

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 mois