Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je utiliser Amazon Athena pour analyser mes journaux d’accès à l’Application Load Balance ?
Je souhaite utiliser Amazon Athena pour analyser mes journaux d’accès à l’Application Load Balancer.
Brève description
Elastic Load Balancing n’active pas la journalisation des accès par défaut. Lorsque vous activez la journalisation des accès, vous devez indiquer un compartiment Amazon Simple Storage Service (Amazon S3). Athena analyse les journaux d’accès à l’Application Load Balancer et au Classic Load Balancer et stocke les journaux dans le compartiment Amazon S3.
Remarque : cette résolution s’applique uniquement aux ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html)Application Load Balancers[.
Résolution
Créer une base de données et une table pour les journaux Application Load Balancer
Procédez comme suit :
- Ouvrez la console Athena.
- Pour créer une base de données, exécutez la commande suivante dans l’éditeur de requête :
Remarque : il est recommandé de créer la base de données dans la même Région AWS que le compartiment S3.CREATE DATABASE alb_db
- Dans la base de données, créez une table alb_logs pour les journaux Application Load Balancer.
Exemple de requête :
Remarque : dans la requête précédente, remplacez le nom de la table et les emplacements S3 par le nom de votre table et vps emplacements S3. Pour le champ projection.day.range, remplacez la valeur 2022/01/01 par une date de début. Pour améliorer les performances des requêtes, vous pouvez créer une table avec une projection des partitions.CREATE EXTERNAL TABLE IF NOT EXISTS alb_logs( type string, time string, elb string, client_ip string, client_port int, target_ip string, target_port int, request_processing_time double, target_processing_time double, response_processing_time double, elb_status_code int, target_status_code string, received_bytes bigint, sent_bytes bigint, request_verb string, request_url string, request_proto string, user_agent string, ssl_cipher string, ssl_protocol string, target_group_arn string, trace_id string, domain_name string, chosen_cert_arn string, matched_rule_priority string, request_creation_time string, actions_executed string, redirect_url string, lambda_error_reason string, target_port_list string, target_status_code_list string, classification string, classification_reason string, conn_trace_id string ) PARTITIONED BY(day STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES( 'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\s]+?)\" \"([^\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)?( .*)?') LOCATION 's3://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/' TBLPROPERTIES( "projection.enabled" = "true", "projection.day.type" = "date", "projection.day.range" = "2022/01/01,NOW", "projection.day.format" = "yyyy/MM/dd", "projection.day.interval" = "1", "projection.day.interval.unit" = "DAYS", "storage.location.template" = "s3://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/${day}" )
- Pour créer une table contenant des partitions stockées dans le catalogue de données AWS Glue, exécutez la requête suivante :
Remarque : dans la requête précédente, remplacez le nom de la table et les emplacements S3 par le nom de votre table et vps emplacements S3.CREATE EXTERNAL TABLE IF NOT EXISTS alb_logs_partitioned(type string, time string, elb string, client_ip string, client_port int, target_ip string, target_port int, request_processing_time double, target_processing_time double, response_processing_time double, elb_status_code int, target_status_code string, received_bytes bigint, sent_bytes bigint, request_verb string, request_url string, request_proto string, user_agent string, ssl_cipher string, ssl_protocol string, target_group_arn string, trace_id string, domain_name string, chosen_cert_arn string, matched_rule_priority string, request_creation_time string, actions_executed string, redirect_url string, lambda_error_reason string, target_port_list string, target_status_code_list string, classification string, classification_reason string, conn_trace_id string ) PARTITIONED BY(day string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES( 'serialization.format' = '1', 'input.regex' ='([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\s]+?)\" \"([^\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)?( .*)?') LOCATION 's3://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/'
- (Facultatif) Pour charger les partitions, exécutez l’instruction DDL ALTER TABLE ADD PARTITION suivante :
Remarque : si votre table utilise une projection de partitions, ignorez l’étape de chargement des partitions. N’utilisez pas de robot AWS Glue dans les journaux Application Load Balancer.ALTER TABLE alb_logs_partitioned ADD PARTITION (day = '2022/05/21') LOCATION's3://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/2022/05/21/'
- Dans le volet de navigation, sous Table, choisissez Aperçu de la table.
- Dans la fenêtre Résultats, vous pouvez consulter les données des journaux d’accès à l’Application Load Balancer.
Remarque : pour exécuter des instructions SQL sur la table, utilisez l’éditeur de requête.
Informations connexes
Vidéos associées


Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- demandé il y a 8 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 10 mois