Créez des rapports personnalisés et analysez les données d'utilisation AppStream 2.0 - Amazon AppStream 2.0

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créez des rapports personnalisés et analysez les données d'utilisation AppStream 2.0

Amazon Athena est un service de requête interactif, sans serveur, que vous pouvez utiliser pour analyser les données stockées dans vos compartiments S3 à l’aide de requêtes SQL standard. Vous pouvez utiliser Athena pour regrouper vos rapports d’utilisation ou générer d’autres types de rapports personnalisés.

Création d'un AWS Glue Crawler

AWS Glue est un service d'extraction, de transformation et de chargement (ETL) entièrement géré qui vous permet de créer une base de données à partir de vos données Amazon S3 et d'interroger cette base de données à l'aide d'Athena. Cette base de données est également appelée catalogue AWS Glue de données. Un AWS Glue robot d'exploration peut détecter automatiquement le schéma de vos données Amazon S3 et créer la base de données et les tables correspondantes. AppStream La version 2.0 fournit un AWS CloudFormation modèle que vous pouvez utiliser pour créer les AWS Glue ressources nécessaires.

Important

L'exécution des étapes de la procédure suivante crée un AWS Glue robot d'exploration. Toutefois, ces étapes ne démarrent pas le crawler. Pour démarrer le crawler, vous devez exécuter les étapes de la procédure suivante. Pour plus d'informations sur les AWS Glue robots d'exploration, consultez la section Définition des robots d'exploration.

Pour créer un AWS Glue crawler
  1. Ouvrez la console AppStream 2.0 à l'adresse https://console.aws.amazon.com/appstream2.

  2. Choisissez la AWS région pour laquelle vous êtes abonné aux rapports d'utilisation.

  3. Dans le volet de navigation, choisissez Usage Reports (Rapports d’utilisation) et vérifiez que la journalisation des rapports d’utilisation est activée.

  4. Dans l'onglet Détails du rapport, dans le paragraphe à côté de Analytics, choisissez le lien du CloudFormationmodèle.

    La sélection du lien ouvre la AWS CloudFormation console, dans laquelle vous pouvez consulter les paramètres de la AWS CloudFormation pile spécifiée par le modèle avant de l'exécuter. Le modèle, lorsqu'il est exécuté, crée un AWS Glue robot d'exploration et plusieurs exemples de requêtes Athena.

  5. Sur la page Spécifier les détails, à côté ScheduleExpression, conservez la valeur par défaut ou spécifiez une valeur d'expression cron différente pour la fréquence à laquelle vous souhaitez exécuter le robot d'exploration. Ne modifiez pas les autres valeurs par défaut. Lorsque vous avez terminé, sélectionnez Next.

    Par défaut, le crawler est programmé pour s’exécuter chaque jour, mais vous pouvez le configurer pour une exécution hebdomadaire, mensuelle ou toute autre fréquence. Pour plus d’informations sur la syntaxe cron, consultez Expressions Cron.

  6. Dans la page Options, conservez les valeurs par défaut, puis choisissez Next (Suivant).

  7. Sur la page de révision, cochez la case à côté de « Je reconnais que cela AWS CloudFormation pourrait créer des ressources IAM avec des noms personnalisés », puis choisissez Créer.

    Vous devez disposer des autorisations AWS Glue et AWS Identity and Access Management (IAM) suffisantes pour créer et exécuter la AWS CloudFormation pile. Si vous n’avez pas les autorisations requises, demandez à votre administrateur de compte Amazon Web Services d’effectuer ces étapes dans votre compte ou de vous accorder les autorisations suivantes.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:CreateNamedQuery", "athena:BatchGetNamedQuery", "athena:GetNamedQuery", "athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetQueryExecution", "athena:ListNamedQueries", "cloudformation:DescribeStacks", "cloudformation:GetStackPolicy", "cloudformation:DescribeStackEvents", "cloudformation:CreateStack", "cloudformation:GetTemplate", "cloudformation:ListChangeSets", "cloudformation:ListStackResources", "iam:GetRole", "iam:CreateRole", "iam:GetRolePolicy", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*", "arn:aws:cloudformation:*:*:stack/AppStreamUsageReports/*", "arn:aws:athena:*:*:workgroup/primary", "arn:aws:s3:::aws-athena-query-results-*" ] }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::appstream-logs-*", "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*" ], "Condition": { "StringEquals": { "iam:PassedToService": "glue.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "cloudformation:GetTemplateSummary", "glue:GetResourcePolicy", "glue:GetCrawlers", "glue:BatchGetCrawlers", "glue:GetClassifiers", "glue:CreateClassifier", "glue:ListCrawlers", "glue:GetTags", "glue:GetCrawlerMetrics", "glue:GetClassifier", "tag:GetResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": "athena:RunQuery", "Resource": "arn:aws:athena:*:*:workgroup/primary" }, { "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetPartitions", "glue:GetTable" ], "Resource": [ "arn:aws:glue:*:*:table/appstream-usage/*", "arn:aws:glue:*:*:database/appstream-usage", "arn:aws:glue:*:*:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:*:*:database/appstream-usage", "arn:aws:glue:*:*:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:GetCrawler", "glue:StartCrawler", "glue:CreateCrawler" ], "Resource": "arn:aws:glue:*:*:crawler/appstream-usage*" }, { "Effect": "Allow", "Action": "glue:GetCatalogImportStatus", "Resource": "arn:aws:glue:*:*:catalog" } ] }

Création d'un catalogue de données à l'aide du AWS Glue Crawler

Le AWS Glue robot d'exploration, lorsqu'il est exécuté, crée un catalogue de données et un schéma qui sont mappés à la structure de vos sessions et de vos rapports d'applications. Chaque fois qu'un nouveau rapport est stocké dans votre compartiment Amazon S3, vous devez exécuter le robot d'exploration pour mettre à jour votre catalogue de AWS Glue données avec les données du nouveau rapport.

Note

Des frais peuvent s'appliquer au fonctionnement de votre AWS Glue robot d'exploration. Pour plus d’informations, consultez Tarification d’AWS Glue.

  1. Ouvrez la AWS Glue console à l'adresse https://console.aws.amazon.com/glue/.

  2. Choisissez la AWS région pour laquelle vous êtes abonné aux rapports d'utilisation.

  3. Cochez la case en regard du crawler appelé appstream-usage-sessions-crawler, puis choisissez Exécuter un analyseur. Répétez cette étape pour le crawler appelé appstream-usage-apps-crawler.

    L'exécution de ces étapes exécute les robots d'exploration et les planifie pour qu'ils s'exécutent automatiquement conformément au calendrier spécifié dans la AWS CloudFormation pile.

  4. Lorsque les deux crawlers ont fini de s’exécuter, dans le volet de navigation, choisissez Bases de données. Une base de données appelée appstream-usage, qui affiche vos rapports d'utilisation, apparaît. Cette base de données est un catalogue de AWS Glue données créé lors de l'exécution d'appstream-usage-sessions-crawler et appstream-usage-apps-crawler.

  5. Pour afficher les tables de la base de données, choisissez appstream-usage, Tables. Deux tables s’affichent : applications et sessions, qui représentent respectivement vos rapports d’utilisation d’applications et de sessions. Sélectionnez l'une ou l'autre table pour afficher son schéma.

    Vous pouvez maintenant interroger ces tables dans Athena à l’aide de SQL.

Création et exécution de requêtes Athena

Pour interroger vos rapports d’utilisation à l’aide d’Athena, suivez les étapes ci-dessous.

Note

Des frais peuvent s’appliquer pour les requêtes Athena que vous exécutez. Pour plus d'informations, consultez Tarification Amazon Athena.

  1. Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/.

  2. Sous Database (Base de données), choisissez appstream-usage.

  3. Dans le volet de requête, saisissez une requête SQL, puis choisissez Run query (Exécuter la requête).

Utilisation des requêtes Athena

Cette section fournit les requêtes SQL que vous pouvez exécuter dans Athena pour analyser les données des rapports d’utilisation de votre compartiment Amazon S3.

Pour créer un rapport de synthèse de toutes les sessions au cours d'un mois donné, exécutez la requête suivante :

SELECT * FROM "appstream-usage"."sessions" WHERE year='four-digit-year' AND month='two-digit-month'

Vous pouvez également effectuer des opérations conjointes entre les tables applications et sessions dans votre requête. Par exemple, pour afficher les différents utilisateurs qui ont lancé chaque application au cours d'un mois donné, exécutez la requête suivante :

SELECT DISTINCT apps.application_name, sessions.user_id FROM "appstream-usage"."applications" apps INNER JOIN "appstream-usage"."sessions" sessions ON (apps.user_session_id = sessions.user_session_id AND sessions.year='four-digit-year' AND sessions.month='two-digit-month') WHERE apps.year='four-digit-year' AND apps.month='two-digit-month' ORDER BY 1, 2

Les résultats des requêtes Athena sont stockés sous forme de fichiers .csv dans un compartiment Amazon S3 de votre compte qui est nommé aws-athena-query-results-account-id-without-hyphens-region-code. Pour faciliter la localisation des résultats de la requête, choisissez Save as (Enregistrer sous) et donnez un nom à votre requête avant de l'exécuter. Vous pouvez également choisir l’icône de téléchargement dans le volet Résultats Athena pour télécharger les résultats de la requête sous la forme d’un fichier .csv.

Pour améliorer les performances et réduire les coûts, Athena utilise le partitionnement afin de réduire la quantité de données analysées dans les requêtes. Pour en savoir plus, consultez Partitionnement de données. Les rapports d’utilisation sont partitionnées dans vos compartiments Amazon S3 par année, par mois et par jour. Vous pouvez limiter vos requêtes à certaines partitions de plage de dates en utilisant les champs year (année), month (mois) et day (jour) comme conditions dans vos requêtes. Par exemple, la requête suivante intègre uniquement les rapports de sessions pour la semaine du 19 mai 2019.

SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, COUNT(DISTINCT user_session_id) AS num_sessions FROM "appstream-usage"."sessions" WHERE year='2019' AND month='05' AND day BETWEEN '19' and '25' GROUP BY 1 ORDER BY 1

En revanche, la requête suivante produit des résultats identiques, mais n’étant pas limitée à une partition, elle intègre tous les rapports de sessions stockés dans votre compartiment Amazon S3.

SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, COUNT(DISTINCT user_session_id) AS num_sessions FROM "appstream-usage"."sessions" WHERE session_end_time BETWEEN '2019-05-19' AND '2019-05-26' GROUP BY 1 ORDER BY 1

Si une session s’étend sur plus d’une journée, les enregistrements de session et d’application apparaissent respectivement dans les rapports de sessions et d’applications correspondant à la journée où la session s’est terminée. Pour cette raison, si vous avez besoin de trouver des enregistrements qui se rapportent à toutes les sessions qui étaient actives au cours d'une période donnée, pensez à étendre l'ensemble des partitions de votre requête par la durée maximale de session que vous avez configurée pour vos flottes.

Par exemple, pour afficher toutes les sessions actives pour une flotte donnée au cours d’un mois civil, où la durée maximale d’une session était de 100 heures, exécutez la requête suivante pour étendre de cinq jours l’ensemble de partitions défini.

SELECT * FROM "appstream-usage"."sessions" WHERE fleet_name = 'fleet_name' AND session_start_time BETWEEN '2019-05-01' AND '2019-06-01' AND year='2019' AND (month='05' OR (month='06' AND day<='05')) ORDER BY session_start_time

Le AWS CloudFormation modèle qui a créé les AWS Glue robots d'exploration a également créé et enregistré plusieurs exemples de requêtes dans votre compte Athena que vous pouvez utiliser pour analyser vos données d'utilisation. Ces exemples de requêtes incluent les suivantes :

  • Rapport de session mensuel regroupé

  • Durée moyenne de la session par pile

  • Nombre de sessions par jour

  • Total des heures de streaming par utilisateur

    Note

    Les frais d’utilisation à la demande sont arrondies à l’heure supérieure pour chaque session.

  • Différents utilisateurs par application

Pour utiliser l'une de ces requêtes, suivez les étapes ci-dessous.

  1. Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/.

  2. Choisissez Saved Queries (Requêtes enregistrées). Les cinq requêtes notées avant cette procédure doivent s'afficher. Le nom de chaque requête commence par « AS2 ». Par exemple, « AS2_users_per_app_curr_mo ».

  3. Pour exécuter une requête, choisissez le nom de la requête plutôt que l'option située en regard du nom.

  4. Le texte de la requête s'affiche dans le volet de requête. Choisissez Exécuter la requête.

Pour afficher ces requêtes dans un AWS CloudFormation modèle distinct, consultez athena-sample-queries-appstream-usage-data_template.yml dans le catalogue d'exemples de code.AWS