

**Présentation d'une nouvelle expérience de console pour AWS WAF**

Vous pouvez désormais utiliser l'expérience mise à jour pour accéder aux AWS WAF fonctionnalités n'importe où dans la console. Pour plus de détails, consultez la section [Utilisation de la console](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

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.

# Trafic du pack de AWS WAF protection de journalisation (ACL Web)
<a name="logging"></a>

Cette section explique les options de journalisation de vos packs de AWS WAF protection (Web ACLs). 

Vous pouvez activer la journalisation pour obtenir des informations détaillées sur le trafic qui est analysé par votre liste ACL web. Les informations enregistrées incluent l'heure à laquelle vous avez AWS WAF reçu une demande Web de votre AWS ressource, des informations détaillées sur la demande et des détails sur les règles auxquelles la demande correspondait. Vous pouvez envoyer les journaux du pack de protection (ACL Web) à un groupe de CloudWatch journaux Amazon Logs, à un bucket Amazon Simple Storage Service (Amazon S3) ou à un flux de diffusion Amazon Data Firehose.

Outre les journaux que vous pouvez activer pour vos packs de protection (Web ACLs), utilise AWS également les journaux de service du trafic des sites Web ou des applications traité par AWS WAF celui-ci pour fournir une assistance et protéger la sécurité des AWS clients et des services.

**Note**  
La configuration de journalisation du pack de protection (ACL Web) n'affecte que les AWS WAF journaux. En particulier, la configuration des champs expurgés pour la journalisation n'a aucun impact sur l'échantillonnage des demandes ou sur la collecte de données par Security Lake. Vous pouvez exclure des champs de la collecte ou de l'échantillonnage en configurant la protection des données du pack de protection (ACL Web). Outre la protection des données, la collecte de données par Security Lake est entièrement configurée via le service Security Lake. 

**Topics**
+ [Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)](logging-pricing.md)
+ [AWS WAF destinations de journalisation](logging-destinations.md)
+ [Configuration de la journalisation pour un pack de protection (ACL Web)](logging-management-configure.md)
+ [Trouver les enregistrements de votre pack de protection (ACL Web)](logging-management.md)
+ [Champs de journal pour le trafic du pack de protection (ACL Web)](logging-fields.md)
+ [Exemples de journaux pour le trafic du pack de protection (ACL Web)](logging-examples.md)

**Autres options de collecte et d'analyse des données**  
Outre la journalisation, vous pouvez activer les options suivantes pour la collecte et l'analyse des données : 
+ **Amazon Security Lake** : vous pouvez configurer Security Lake pour collecter les données du pack de protection (ACL Web). Security Lake collecte les données des journaux et des événements à partir de diverses sources à des fins de normalisation, d'analyse et de gestion. Pour plus d'informations sur cette option, consultez [Qu'est-ce qu'Amazon Security Lake ?](https://docs.aws.amazon.com/security-lake/latest/userguide/what-is-security-lake.html) et [Collecte de données à partir AWS des services](https://docs.aws.amazon.com/security-lake/latest/userguide/internal-sources.html) décrits dans le *guide de l'utilisateur d'Amazon Security Lake*. 

  AWS WAF l'utilisation de cette option ne vous est pas facturée. Pour plus d'informations sur les tarifs, consultez [les sections Tarification](https://aws.amazon.com/security-lake/pricing/) de [Security Lake et Comment la tarification de Security Lake est déterminée](https://docs.aws.amazon.com/security-lake/latest/userguide/estimating-costs.html) dans le *guide de l'utilisateur d'Amazon Security Lake*. 
+ **Échantillonnage de demandes** : vous pouvez configurer votre pack de protection (ACL Web) pour échantillonner les requêtes Web qu'il évalue, afin de vous faire une idée du type de trafic reçu par votre application. Pour de plus amples informations sur cette option, veuillez consulter [Affichage d'un exemple de demandes web](web-acl-testing-view-sample.md). 

# Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)
<a name="logging-pricing"></a>

Cette section explique les considérations tarifaires relatives à l'utilisation des journaux de trafic des packs de protection (ACL Web).

Les informations de trafic du pack de protection de journalisation (ACL Web) vous sont facturées en fonction des coûts associés à chaque type de destination de journal. Ces frais s'ajoutent aux frais d'utilisation AWS WAF. Vos coûts peuvent varier en fonction de facteurs tels que le type de destination que vous choisissez et la quantité de données que vous enregistrez. 

Vous trouverez ci-dessous des liens vers les informations tarifaires pour chaque type de destination de journalisation :
+ **CloudWatch Journaux** — Les frais concernent la livraison des bûches vendues. Consultez les [tarifs d'Amazon CloudWatch Logs](https://aws.amazon.com/cloudwatch/pricing/). Sous **Paid Tier**, choisissez l'onglet **Logs**, puis sous **Vended Logs**, consultez les informations relatives à la **livraison aux CloudWatch journaux**.
+ Compartiments **Amazon S3** — Les frais Amazon S3 sont les frais combinés pour la livraison CloudWatch des journaux vers les compartiments Amazon S3 et pour l'utilisation d'Amazon S3. 
  + Pour Amazon S3, consultez la [tarification d'Amazon S3](https://aws.amazon.com/s3/pricing/). 
  + Pour la livraison CloudWatch des journaux par Logs à Amazon S3, consultez la [tarification d'Amazon CloudWatch Logs](https://aws.amazon.com/cloudwatch/pricing/). Sous **Paid Tier**, choisissez l'onglet **Logs**, puis sous **Vended Logs**, consultez les informations relatives à la **livraison à S3**
+ **Firehose — Consultez** les tarifs d'[Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/pricing/).

Pour plus d'informations sur la AWS WAF tarification, consultez la section [AWS WAF Tarification](https://aws.amazon.com/waf/pricing/). 

# AWS WAF destinations de journalisation
<a name="logging-destinations"></a>

Cette section décrit les options de journalisation que vous pouvez choisir pour vos AWS WAF journaux. Chaque section fournit des conseils pour configurer la journalisation, y compris des informations sur tout comportement spécifique au type de destination. Après avoir configuré la destination de journalisation, vous pouvez fournir ses spécifications à la configuration de journalisation de votre pack de protection (ACL Web) pour commencer à vous y connecter.

**Topics**
+ [CloudWatch Journaux](logging-cw-logs.md)
+ [Amazon S3](logging-s3.md)
+ [Firehose](logging-kinesis.md)

# Envoi des journaux de trafic du pack de protection (ACL Web) à un groupe de CloudWatch journaux Amazon Logs
<a name="logging-cw-logs"></a>

Cette rubrique fournit des informations sur l'envoi des journaux de trafic de votre pack de protection (ACL Web) à un groupe de CloudWatch journaux de journaux. 

**Note**  
La connexion vous est facturée en plus des frais d'utilisation AWS WAF. Pour plus d'informations, consultez [Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)](logging-pricing.md).

Pour envoyer des journaux à Amazon CloudWatch Logs, vous devez créer un groupe de CloudWatch journaux de journaux. Lorsque vous activez la connexion AWS WAF, vous fournissez l'ARN du groupe de journaux. Une fois que vous avez activé la journalisation pour votre pack de protection (ACL Web), AWS WAF les journaux sont transmis au groupe de CloudWatch journaux Logs dans les flux de journaux. 

Lorsque vous utilisez CloudWatch Logs, vous pouvez explorer les journaux de votre pack de protection (ACL Web) dans la AWS WAF console. Sur la page de votre pack de protection (ACL Web), sélectionnez l'onglet **Logging Insights**. Cette option s'ajoute aux informations de journalisation fournies aux CloudWatch journaux via la CloudWatch console. 

Configurez le groupe de journaux pour les journaux du pack de AWS WAF protection (ACL Web) dans la même région que le pack de protection (ACL Web) et en utilisant le même compte que celui que vous utilisez pour gérer le pack de protection (ACL Web). Pour plus d'informations sur la configuration d'un groupe de CloudWatch journaux, consultez la section [Utilisation des groupes de journaux et des flux de journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

## Quotas pour CloudWatch les groupes de journaux
<a name="logging-cw-logs-quotas"></a>

CloudWatch Les journaux ont un quota de débit maximal par défaut, partagé entre tous les groupes de journaux d'une région, que vous pouvez demander à augmenter. Si vos exigences de journalisation sont trop élevées par rapport au paramètre de débit actuel, des mesures de limitation s'afficheront `PutLogEvents` pour votre compte. Pour consulter la limite dans la console Service Quotas et demander une augmentation, consultez le [ PutLogEvents quota de CloudWatch logs](https://console.aws.amazon.com/servicequotas/home/services/logs/quotas/L-7E1FAE88).

## Désignation des groupes de journaux
<a name="logging-cw-logs-naming"></a>

Les noms de vos groupes de journaux doivent commencer par `aws-waf-logs-` et peuvent se terminer par le suffixe de votre choix, `aws-waf-logs-testLogGroup2` par exemple.

Le format ARN obtenu est le suivant : 

```
arn:aws:logs:Region:account-id:log-group:aws-waf-logs-log-group-suffix
```

Les flux de journaux ont le format de dénomination suivant : 

```
Region_web-acl-name_log-stream-number
```

Voici un exemple de flux de journal pour le pack de protection (ACL Web) `TestWebACL` dans Region`us-east-1`. 

```
us-east-1_TestWebACL_0
```

## Autorisations requises pour publier des journaux dans CloudWatch Logs
<a name="logging-cw-logs-permissions"></a>

La configuration de la journalisation du trafic du pack de protection (ACL Web) pour un groupe de CloudWatch journaux de journaux nécessite les paramètres d'autorisation décrits dans cette section. Les autorisations sont définies pour vous lorsque vous utilisez l'une des politiques gérées d'accès AWS WAF complet, `AWSWAFConsoleFullAccess` ou`AWSWAFFullAccess`. Si vous souhaitez gérer un accès plus précis à votre journalisation et à vos AWS WAF ressources, vous pouvez définir vous-même les autorisations. Pour plus d'informations sur la gestion des autorisations, consultez la section [Gestion de l'accès aux AWS ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) dans le *Guide de l'utilisateur IAM*. Pour plus d'informations sur les politiques AWS WAF gérées, consultez[AWS politiques gérées pour AWS WAF](security-iam-awsmanpol.md). 

Ces autorisations vous permettent de modifier la configuration de journalisation du pack de protection (ACL Web), de configurer la livraison des CloudWatch journaux et de récupérer des informations sur votre groupe de journaux. Ces autorisations doivent être associées à l'utilisateur que vous utilisez pour gérer AWS WAF. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "wafv2:PutLoggingConfiguration",
                "wafv2:DeleteLoggingConfiguration"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow",
            "Sid": "LoggingConfigurationAPI"
        },
        {
            "Sid": "WebACLLoggingCWL",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

Lorsque des actions sont autorisées sur toutes les AWS ressources, cela est indiqué dans la politique avec un `"Resource"` paramètre de`"*"`. Cela signifie que les actions sont autorisées sur toutes les AWS ressources prises *en charge par chaque action*. Par exemple, l'action n'`wafv2:PutLoggingConfiguration`est prise en charge que pour la `wafv2` journalisation des ressources de configuration. 

# Envoi des journaux de trafic du pack de protection (ACL Web) vers un bucket Amazon Simple Storage Service
<a name="logging-s3"></a>

Cette rubrique fournit des informations sur l'envoi des journaux de trafic de votre pack de protection (ACL Web) vers un compartiment Amazon S3. 

**Note**  
La connexion vous est facturée en plus des frais d'utilisation AWS WAF. Pour plus d'informations, consultez [Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)](logging-pricing.md).

Pour envoyer les journaux de trafic de votre pack de protection (ACL Web) à Amazon S3, vous configurez un compartiment Amazon S3 à partir du même compte que celui que vous utilisez pour gérer le pack de protection (ACL Web), et vous nommez le compartiment en commençant par`aws-waf-logs-`. Lorsque vous activez la connexion AWS WAF, vous indiquez le nom du compartiment. Pour plus d'informations sur la création d'un bucket de journalisation, consultez [Create a Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.

Vous pouvez accéder à vos journaux Amazon S3 et les analyser à l'aide du service de requêtes interactif Amazon Athena. Athena facilite l'analyse des données directement dans Amazon S3 à l'aide du SQL standard. En effectuant quelques actions AWS Management Console, vous pouvez pointer Athena vers les données stockées dans Amazon S3 et commencer rapidement à utiliser le SQL standard pour exécuter des requêtes ad hoc et obtenir des résultats. Pour plus d'informations, consultez la section [Interrogation des AWS WAF journaux](https://docs.aws.amazon.com/athena/latest/ug/waf-logs.html) dans le guide de l'*utilisateur d'Amazon Athena*. Pour des exemples de requêtes Amazon Athena supplémentaires, consultez [waf-log-sample-athenaaws-samples/](https://github.com/aws-samples/waf-log-sample-athena-queries) -queries sur le site Web. GitHub 

**Note**  
AWS WAF prend en charge le chiffrement avec des compartiments Amazon S3 pour le type de clé Amazon S3 (SSE-S3) et pour AWS Key Management Service (SSE-KMS). AWS KMS keys AWS WAF ne prend pas en charge le chiffrement des AWS Key Management Service clés gérées par AWS.

Les fichiers journaux de votre pack de protection (ACL Web) sont publiés dans le compartiment Amazon S3 toutes les 5 minutes. Chaque fichier journal contient des enregistrements du trafic enregistré au cours des 5 minutes précédentes.

La taille maximale d'un fichier journal est de 75 Mo. Si le fichier journal atteint la taille limite de fichier dans un délai de 5 minutes, le journal arrête d'y ajouter des enregistrements, le publie dans le compartiment Amazon S3, puis crée un nouveau fichier journal.

Les fichiers journaux sont compressés. Si vous ouvrez les fichiers à l'aide de la console Amazon S3, Amazon S3 décompresse les enregistrements du journal et les affiche. Si vous téléchargez les fichiers journaux, vous devez les décompresser pour afficher les enregistrements.

Un seul fichier journal contient des entrées entrelacées avec plusieurs enregistrements. Pour consulter tous les fichiers journaux d'un pack de protection (ACL Web), recherchez les entrées agrégées par nom du pack de protection (ACL Web), région et ID de compte.

## Exigences en matière de dénomination et syntaxe
<a name="logging-s3-naming"></a>

Les noms des compartiments pour la AWS WAF journalisation doivent commencer par `aws-waf-logs-` et peuvent se terminer par le suffixe de votre choix. Par exemple, `aws-waf-logs-LOGGING-BUCKET-SUFFIX`. 

**Emplacement du godet**  
Les emplacements des compartiments utilisent la syntaxe suivante : 

```
s3://aws-waf-logs-LOGGING-BUCKET-SUFFIX/
```

**ARN de compartiment**  
Le format du bucket Amazon Resource Name (ARN) est le suivant : 

```
arn:aws:s3:::aws-waf-logs-LOGGING-BUCKET-SUFFIX
```

**Emplacements des compartiments avec préfixes**  
Si vous utilisez des préfixes dans le nom de vos clés d'objet pour organiser les données que vous stockez dans vos compartiments, vous pouvez fournir vos préfixes dans les noms de vos compartiments de journalisation.

**Note**  
Cette option n'est pas disponible via la console. Utilisez AWS WAF APIs la CLI ou AWS CloudFormation.

Pour plus d'informations sur l'utilisation des préfixes dans Amazon S3, consultez la section [Organisation des objets à l'aide de préfixes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) dans le guide de l'*utilisateur d'Amazon Simple Storage Service*. 

Les emplacements des compartiments dotés de préfixes utilisent la syntaxe suivante : 

```
s3://aws-waf-logs-LOGGING-BUCKET-SUFFIX/KEY-NAME-PREFIX/
```

**Dossiers de compartiments et noms de fichiers**  
À l'intérieur de vos compartiments, et après les préfixes que vous fournissez, vos AWS WAF journaux sont écrits dans une structure de dossiers déterminée par votre identifiant de compte, la région, le nom du pack de protection (ACL Web), ainsi que la date et l'heure. 

```
AWSLogs/account-id/WAFLogs/Region/web-acl-name/YYYY/MM/dd/HH/mm
```

À l'intérieur des dossiers, les noms des fichiers journaux suivent un format similaire : 

```
account-id_waflogs_Region_web-acl-name_timestamp_hash.log.gz
```

Les spécifications temporelles utilisées dans la structure des dossiers et dans le nom du fichier journal sont conformes à la spécification du format d'horodatage. `YYYYMMddTHHmmZ`

Voici un exemple de fichier journal dans un compartiment Amazon S3 pour un compartiment nommé`aws-waf-logs-LOGGING-BUCKET-SUFFIX`. L' Compte AWS est`11111111111`. Le pack de protection (ACL Web) est `TEST-WEBACL` et la région est`us-east-1`.

```
s3://aws-waf-logs-LOGGING-BUCKET-SUFFIX/AWSLogs/11111111111/WAFLogs/us-east-1/TEST-WEBACL/2021/10/28/19/50/11111111111_waflogs_us-east-1_TEST-WEBACL_20211028T1950Z_e0ca43b5.log.gz
```

**Note**  
Les noms de vos compartiments pour la AWS WAF journalisation doivent commencer par `aws-waf-logs-` et peuvent se terminer par le suffixe de votre choix. 

## Autorisations requises pour publier des journaux sur Amazon S3
<a name="logging-s3-permissions"></a>

La configuration de la journalisation du trafic du pack de protection (ACL Web) pour un compartiment Amazon S3 nécessite les paramètres d'autorisation suivants. Ces autorisations sont définies pour vous lorsque vous utilisez l'une des politiques gérées d'accès AWS WAF complet, `AWSWAFConsoleFullAccess` ou`AWSWAFFullAccess`. Si vous souhaitez gérer davantage l'accès à votre journal et à vos AWS WAF ressources, vous pouvez définir ces autorisations vous-même. Pour plus d'informations sur la gestion des autorisations, consultez la section [Gestion de l'accès aux AWS ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) dans le *Guide de l'utilisateur IAM*. Pour plus d'informations sur les politiques AWS WAF gérées, consultez[AWS politiques gérées pour AWS WAF](security-iam-awsmanpol.md). 

Les autorisations suivantes vous permettent de modifier la configuration de journalisation du pack de protection (ACL Web) et de configurer la livraison des journaux vers votre compartiment Amazon S3. Ces autorisations doivent être associées à l'utilisateur que vous utilisez pour gérer AWS WAF. 

**Note**  
Lorsque vous définissez les autorisations répertoriées ci-dessous, vous pouvez voir des erreurs dans vos AWS CloudTrail journaux indiquant que l'accès a été refusé, mais que les autorisations sont correctes pour la AWS WAF journalisation. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "wafv2:PutLoggingConfiguration",
            "wafv2:DeleteLoggingConfiguration"
         ],
         "Resource":[
            "*"
         ],
         "Effect":"Allow",
         "Sid":"LoggingConfigurationAPI"
      },
    {                                                                                                                                                                
       "Sid":"WebACLLogDelivery",                                                                                                                                    
       "Action":[                                                                                                                                                    
          "logs:CreateLogDelivery",                                                                                                                                  
          "logs:DeleteLogDelivery"                                                                                                                                   
       ],                                                                                                                                                            
       "Resource": "*",                                                                                                                                              
       "Effect":"Allow"                                                                                                                                              
    },  
      {
         "Sid":"WebACLLoggingS3",
         "Action":[
            "s3:PutBucketPolicy",
            "s3:GetBucketPolicy"
         ],
         "Resource": [
         "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-destination-bucket-suffix"
         ],
         "Effect":"Allow"
      }
   ]
}
```

------

Lorsque des actions sont autorisées sur toutes les AWS ressources, cela est indiqué dans la politique avec un `"Resource"` paramètre de`"*"`. Cela signifie que les actions sont autorisées sur toutes les AWS ressources prises *en charge par chaque action*. Par exemple, l'action n'`wafv2:PutLoggingConfiguration`est prise en charge que pour la `wafv2` journalisation des ressources de configuration. 

Par défaut, les compartiments Amazon S3 et les objets qu'ils contiennent sont privés. Seul le propriétaire du compartiment peut accéder au compartiment et aux objets qui y sont stockés. Le propriétaire du bucket peut toutefois accorder l'accès à d'autres ressources et utilisateurs en rédigeant une politique d'accès.

Si l'utilisateur qui crée le journal est propriétaire du compartiment, le service attache automatiquement la politique suivante au compartiment pour autoriser le journal à y publier des journaux : 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AWSLogDeliveryWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-destination-bucket-suffix/AWSLogs/123456789012/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": ["123456789012"]
        },
        "ArnLike": {
        "aws:SourceArn": ["arn:aws:logs:us-east-2:123456789012:*"]
        }
      }
    },
    {
      "Sid": "AWSLogDeliveryAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-destination-bucket-suffix",
      "Condition": {
        "StringEquals": {
        "aws:SourceAccount": ["123456789012"]
        },
        "ArnLike": {
        "aws:SourceArn": ["arn:aws:logs:us-east-2:123456789012:*"]
        }
      }
    }
  ]
}
```

------

**Note**  
Les noms de vos compartiments pour la AWS WAF journalisation doivent commencer par `aws-waf-logs-` et peuvent se terminer par le suffixe de votre choix. 

Si l'utilisateur qui crée le journal n'est pas propriétaire du compartiment ou ne dispose pas des `PutBucketPolicy` autorisations `GetBucketPolicy` et pour le compartiment, la création du journal échoue. Dans ce cas, le propriétaire du compartiment doit ajouter manuellement la politique précédente au compartiment et spécifier l' Compte AWS ID du créateur du journal. Pour de plus amples informations, veuillez consulter [Comment ajouter une politique de compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*. Si le bucket reçoit les journaux de plusieurs comptes, ajoutez une entrée d'`Resource`élément à la déclaration de `AWSLogDeliveryWrite` politique pour chaque compte. 

Par exemple, la politique de compartiment suivante permet Compte AWS `111122223333` de publier des journaux dans un compartiment nommé `aws-waf-logs-LOGGING-BUCKET-SUFFIX` :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "AWSLogDeliveryWrite20150319",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-destination-bucket-suffix/AWSLogs/111122223333/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": ["111122223333"]
                },
                "ArnLike": {
                    "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"]
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-destination-bucket-suffix",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": ["111122223333"]
                },
                "ArnLike": {
                "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"]
                }
            }
        }
    ]
}
```

------

**Note**  
Dans certains cas, des erreurs `AccessDenied` peuvent apparaître dans AWS CloudTrail si l'autorisation `s3:ListBucket` n'a pas été accordée à `delivery.logs.amazonaws.com`. Pour éviter ces erreurs dans vos CloudTrail journaux, vous devez accorder l'`s3:ListBucket`autorisation `delivery.logs.amazonaws.com` et inclure les `Condition` paramètres indiqués dans l'`s3:GetBucketAcl `autorisation définie dans la politique de compartiment précédente. Pour simplifier les choses, au lieu d'en créer un nouveau`Statement`, vous pouvez directement le mettre `AWSLogDeliveryAclCheck` à jour`“Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]`.

## Autorisations d'utilisation AWS Key Management Service avec une clé KMS
<a name="logging-s3-permissions-encrypt-kms"></a>

Si votre destination de journalisation utilise le chiffrement côté serveur avec des clés stockées dans AWS Key Management Service (SSE-KMS) et que vous utilisez une clé gérée par le client (clé KMS), vous devez AWS WAF autoriser l'utilisation de votre clé KMS. Pour ce faire, vous ajoutez une politique clé à la clé KMS pour la destination que vous avez choisie. Cela permet à la AWS WAF journalisation d'écrire vos fichiers journaux vers votre destination. 

Ajoutez la politique de clé suivante à votre clé KMS AWS WAF pour autoriser la connexion à votre compartiment Amazon S3.

```
{
    "Sid": "Allow AWS WAF to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "delivery.logs.amazonaws.com"
        ]
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

## Autorisations requises pour accéder aux fichiers journaux Amazon S3
<a name="logging-s3-log-file-access"></a>

Amazon S3 utilise des listes de contrôle d'accès (ACLs) pour gérer l'accès aux fichiers journaux créés par un AWS WAF journal. Par défaut, le propriétaire du compartiment dispose d'autorisations `FULL_CONTROL` sur chaque fichier journal. Si le propriétaire de la diffusion des journaux n'est pas le propriétaire du compartiment, il ne dispose d'aucune autorisation. Le compte de diffusion des journaux possède les autorisations `READ` et `WRITE`. Pour de plus amples informations, veuillez consulter [Présentation des listes de contrôle d'accès (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) dans le *Guide du développeur Amazon Simple Storage Service*.

# Envoi des journaux de trafic du pack de protection (ACL Web) à un flux de diffusion Amazon Data Firehose
<a name="logging-kinesis"></a>

Cette section fournit des informations sur l'envoi des journaux de trafic de votre pack de protection (ACL Web) vers un flux de diffusion Amazon Data Firehose. 

**Note**  
La connexion vous est facturée en plus des frais d'utilisation AWS WAF. Pour plus d'informations, consultez [Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)](logging-pricing.md).

Pour envoyer des journaux à Amazon Data Firehose, vous devez envoyer des journaux depuis votre pack de protection (ACL Web) vers un flux de diffusion Amazon Data Firehose que vous configurez dans Firehose. Après avoir activé la journalisation, AWS WAF envoie les journaux à votre destination de stockage via le point de terminaison HTTPS de Firehose. 

Un AWS WAF journal équivaut à un enregistrement Firehose. Si vous recevez généralement 10 000 requêtes par seconde et que vous activez les journaux complets, vous devriez avoir un paramètre de 10 000 enregistrements par seconde dans Firehose. Si vous ne configurez pas correctement Firehose, tous les journaux ne AWS WAF seront pas enregistrés. Pour plus d'informations, consultez la section [Quotas Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). 

Pour plus d'informations sur la façon de créer un flux de diffusion Amazon Data Firehose et de consulter vos journaux enregistrés, consultez [Qu'est-ce qu'Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) ? 

Pour en savoir plus sur la création des flux de diffusion, consultez [Création d’un flux de diffusion Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html).

## Configuration d'un flux de diffusion Amazon Data Firehose pour votre pack de protection (ACL Web)
<a name="logging-kinesis-configuration"></a>

Configurez un flux de diffusion Amazon Data Firehose pour votre pack de protection (ACL Web) comme suit.
+ Créez-le en utilisant le même compte que celui que vous utilisez pour gérer le pack de protection (ACL Web).
+ Créez-le dans la même région que le pack de protection (ACL Web). Si vous capturez des journaux pour Amazon CloudFront, créez le firehose dans la région USA Est (Virginie du Nord),`us-east-1`.
+ Donnez au data firehose un nom commençant par le préfixe`aws-waf-logs-`. Par exemple, `aws-waf-logs-us-east-2-analytics`.
+ Configurez-le pour le téléchargement direct, ce qui permet aux applications d'accéder directement au flux de diffusion. Dans la [console Amazon Data Firehose](https://console.aws.amazon.com/firehose), pour le paramètre **Source** du flux de diffusion, choisissez **Direct PUT ou autres** sources. Par le biais de l'API, définissez la propriété du flux `DeliveryStreamType` de diffusion sur`DirectPut`.
**Note**  
N'utilisez pas a `Kinesis stream` comme source.

## Autorisations requises pour publier des journaux dans un flux de diffusion Amazon Data Firehose
<a name="logging-kinesis-permissions"></a>

Pour comprendre les autorisations requises pour votre configuration Kinesis Data Firehose[, consultez la section Contrôle des accès avec Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html).

Vous devez disposer des autorisations suivantes pour activer correctement la journalisation du pack de protection (ACL Web) avec un flux de diffusion Amazon Data Firehose.
+ `iam:CreateServiceLinkedRole`
+ `firehose:ListDeliveryStreams`
+ `wafv2:PutLoggingConfiguration`

Pour plus d'informations sur les rôles liés aux services et les `iam:CreateServiceLinkedRole` autorisations, consultez. [Utilisation de rôles liés à un service pour AWS WAF](using-service-linked-roles.md)

# Configuration de la journalisation pour un pack de protection (ACL Web)
<a name="logging-management-configure"></a>

Cette section fournit des instructions pour configurer la protection des données pour un pack de protection (ACL Web).

**Note**  
La connexion vous est facturée en plus des frais d'utilisation AWS WAF. Pour plus d'informations, consultez [Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)](logging-pricing.md).

Pour activer la journalisation pour un pack de protection (ACL Web), vous devez déjà avoir configuré la destination de journalisation que vous allez utiliser. Pour plus d'informations sur vos choix de destinations et les exigences relatives à chacune d'entre elles, consultez[AWS WAF destinations de journalisation](logging-destinations.md).

**Pour configurer la journalisation pour un pack de protection (ACL Web)**

1. Connectez-vous à la AWS WAF console AWS Management Console et ouvrez-la sur [https://console.aws.amazon.com/wafv2/homev2](https://console.aws.amazon.com/wafv2/homev2). 

1. Dans le volet de navigation, choisissez les **packs de protection (Web ACLs)**.

1. Choisissez le nom du pack de protection (ACL Web) pour lequel vous souhaitez activer la journalisation. La console vous amène à la description du pack de protection (ACL Web), où vous pouvez le modifier.

1. Dans l'onglet **Journalisation et mesures**, choisissez **Activer la journalisation**.

1. Choisissez le type de destination de journalisation, puis choisissez la destination de journalisation que vous avez configurée. Vous devez choisir une destination de journalisation dont le nom commence par`aws-waf-logs-`.

1. (Facultatif) Si vous ne souhaitez pas que certains champs soient inclus dans les journaux, supprimez-les. Choisissez le champ à censurer, puis choisissez **Ajouter**. Répétez si nécessaire pour censurer des champs supplémentaires. Les champs expurgés apparaissent dans les journaux sous `xxx` la forme.
**Note**  
Ce paramètre n'a aucun impact sur l'échantillonnage des demandes. Vous pouvez exclure des champs de l'échantillonnage des demandes en configurant la protection des données du pack de protection (ACL Web) ou en désactivant l'échantillonnage pour le pack de protection (ACL Web). 

1. (Facultatif) Si vous ne souhaitez pas envoyer toutes les demandes aux journaux, ajoutez vos critères de filtrage et votre comportement. Sous **Filtrer les journaux**, pour chaque filtre que vous souhaitez appliquer, choisissez **Ajouter un filtre**, puis choisissez vos critères de filtrage et indiquez si vous souhaitez conserver ou supprimer les demandes correspondant à ces critères. Lorsque vous avez fini d'ajouter des filtres, modifiez si nécessaire le **comportement de journalisation par défaut**. 
**Note**  
Si vous ajoutez plusieurs filtres, il les AWS WAF évalue en commençant par le haut.

1. Choisissez **Activer la journalisation**.
**Note**  
Lorsque vous activez correctement la journalisation, AWS WAF un rôle lié à un service est créé avec les autorisations nécessaires pour écrire des journaux sur la destination de journalisation. Pour de plus amples informations, veuillez consulter [Utilisation de rôles liés à un service pour AWS WAF](using-service-linked-roles.md).

# Trouver les enregistrements de votre pack de protection (ACL Web)
<a name="logging-management"></a>

Cette section explique comment trouver les enregistrements de votre pack de protection (ACL Web).

**Note**  
La connexion vous est facturée en plus des frais d'utilisation AWS WAF. Pour plus d'informations, consultez [Tarification des informations relatives au trafic du pack de protection de journalisation (ACL Web)](logging-pricing.md).

**Si vous ne trouvez aucun enregistrement de journal dans vos journaux**  
En de rares occasions, il est possible que le taux de livraison des AWS WAF grumes tombe en dessous de 100 %, les journaux étant livrés dans la mesure du possible. L' AWS WAF architecture donne la priorité à la sécurité de vos applications par rapport à toute autre considération. Dans certaines situations, par exemple lorsque les flux de journalisation sont soumis à une limitation du trafic, cela peut entraîner la suppression d'enregistrements. Cela ne devrait pas affecter plus que quelques enregistrements. Si vous remarquez un certain nombre d'entrées de journal manquantes, contactez le [AWS Support Centre](https://console.aws.amazon.com/support/home#/).

Dans la configuration de journalisation de votre pack de protection (ACL Web), vous pouvez personnaliser ce qui est AWS WAF envoyé aux journaux.
+ **Rédaction des champs** : vous pouvez supprimer les champs suivants des enregistrements du journal pour les règles qui utilisent les paramètres de correspondance correspondants : **chemin d'URI**, **chaîne de requête**, **en-tête unique** et méthode **HTTP**. Les champs expurgés apparaissent comme `REDACTED` dans les journaux. Par exemple, si vous supprimez le champ **Chaîne de requête**, dans les journaux, il sera répertorié comme `REDACTED` pour toutes les règles utilisant le paramètre de correspondance des **chaînes de requête**. **La rédaction s'applique uniquement au composant de demande que vous spécifiez pour la correspondance dans la règle, de sorte que la rédaction du composant d'**en-tête unique** ne s'applique pas aux règles qui correspondent aux en-têtes.** Pour obtenir la liste des champs du journal, consultez[Champs de journal pour le trafic du pack de protection (ACL Web)](logging-fields.md).
**Note**  
Ce paramètre n'a aucun impact sur l'échantillonnage des demandes. Vous pouvez exclure des champs de l'échantillonnage des demandes en configurant la protection des données du pack de protection (ACL Web) ou en désactivant l'échantillonnage pour le pack de protection (ACL Web). 
+ **Filtrage des journaux** : vous pouvez ajouter un filtrage pour spécifier les requêtes Web qui sont conservées dans les journaux et celles qui sont supprimées. Vous filtrez les paramètres qui AWS WAF s'appliquent lors de l'évaluation de la demande Web. Vous pouvez filtrer selon les paramètres suivants : 
  + **Étiquette entièrement qualifiée** : les étiquettes entièrement qualifiées ont un préfixe, des espaces de noms facultatifs et un nom d'étiquette. Le préfixe identifie le contexte du groupe de règles ou du pack de protection (ACL Web) de la règle qui a ajouté l'étiquette. Pour plus d'informations sur les étiquettes, consultez[Étiquetage des requêtes Web dans AWS WAF](waf-labels.md).
  + **Action par règle** : vous pouvez filtrer sur n'importe quel paramètre d'action de règle normal ainsi que sur l'ancienne option de `EXCLUDED_AS_COUNT` remplacement pour les règles de groupe de règles. Pour plus d'informations sur les paramètres d'action des règles, consultez[Utilisation des actions liées aux règles dans AWS WAF](waf-rule-action.md). Pour plus d'informations sur les dérogations aux actions des règles actuelles et anciennes pour les règles de groupe de règles, consultez[Remplacer les actions du groupe de règles dans AWS WAF](web-acl-rule-group-override-options.md). 
    + Les filtres d'action de règle normaux s'appliquent aux actions configurées dans les règles ainsi qu'aux actions configurées à l'aide de l'option actuelle permettant de remplacer une action de règle de groupe de règles. 
    + Le filtre du `EXCLUDED_AS_COUNT` journal chevauche le filtre du journal des `Count` actions. `EXCLUDED_AS_COUNT`filtre à la fois les options actuelles et héritées pour remplacer une action de règle de groupe de règles surCount. 

# Champs de journal pour le trafic du pack de protection (ACL Web)
<a name="logging-fields"></a>

La liste suivante décrit les champs de journal possibles. 

**action**  
Action de fin AWS WAF appliquée à la demande. Cela indique une autorisation, un blocage, un CAPTCHA ou un défi. Les Challenge actions CAPTCHA et prennent fin lorsque la requête Web ne contient pas de jeton valide.

**args**  
Chaîne de requête.

**Réponse au captcha**  
État de l'action CAPTCHA pour la demande, renseigné lorsqu'une CAPTCHA action est appliquée à la demande. Ce champ est renseigné pour toute CAPTCHA action, qu'elle soit terminale ou non. Si l'CAPTCHAaction est appliquée plusieurs fois à une demande, ce champ est renseigné à partir de la dernière fois que l'action a été appliquée.   
L'CAPTCHAaction met fin à l'inspection des demandes Web lorsque la demande n'inclut pas de jeton ou lorsque le jeton n'est pas valide ou a expiré. Si l'CAPTCHAaction prend fin, ce champ inclut un code de réponse et le motif de l'échec. Si l'action n'est pas terminée, ce champ inclut un horodatage de résolution. Pour différencier une action terminante d'une action non terminale, vous pouvez filtrer un `failureReason` attribut non vide dans ce champ.

**cfDistributionTenantId**  
Identifiant du locataire CloudFront de distribution associé à la demande Web. Ce champ est facultatif et s'applique uniquement aux packs de protection (Web ACLs) associés aux locataires CloudFront de distribution.

**Réponse au défi**  
État de l'action de défi pour la demande, renseigné lorsqu'une Challenge action est appliquée à la demande. Ce champ est renseigné pour toute Challenge action, qu'elle soit terminale ou non. Si l'Challengeaction est appliquée plusieurs fois à une demande, ce champ est renseigné à partir de la dernière fois que l'action a été appliquée.   
L'Challengeaction met fin à l'inspection des demandes Web lorsque la demande n'inclut pas de jeton ou lorsque le jeton n'est pas valide ou a expiré. Si l'Challengeaction prend fin, ce champ inclut un code de réponse et le motif de l'échec. Si l'action n'est pas terminée, ce champ inclut un horodatage de résolution. Pour différencier une action terminante d'une action non terminale, vous pouvez filtrer un `failureReason` attribut non vide dans ce champ.

**Client ASN**  
Numéro de système autonome (ASN) associé à l'adresse IP d'origine de la requête Web.  
**ClientASN** est connecté AWS WAF aux journaux uniquement lorsqu'une instruction ASN match est utilisée. Dans le cas contraire, ce champ n'est pas enregistré.

**clientIp**  
Adresse IP du client envoyant la requête.

**country**  
Pays source de la requête. S'il n' AWS WAF est pas en mesure de déterminer le pays d'origine, il définit ce champ sur`-`. 

**country**  
Pays source de la requête. S'il n' AWS WAF est pas en mesure de déterminer le pays d'origine, il définit ce champ sur`-`. 

**excludedRules**  
Utilisé uniquement pour les règles de groupe de règles. Liste des règles dans le groupe de règles que vous avez exclues. L'action associée à ces règles est définie surCount.   
Si vous remplacez une règle pour qu'elle soit prise en compte à l'aide de l'option d'action de remplacement de la règle, les correspondances ne sont pas répertoriées ici. Ils sont répertoriés sous forme de paires d'actions `action` et`overriddenAction`.    
exclusionType  
Type qui indique que la règle exclue a une actionCount.  
ruleId  
ID de la règle au sein du groupe de règles qui est exclu.

**formatVersion**  
Version du format du journal.

**ASN transféré**  
Numéro de système autonome (ASN) associé à l'adresse IP de l'entité qui a transmis la demande Web.

**headers**  
Liste des en-têtes.

**httpMethod**  
Méthode HTTP de la requête.

**httpRequest**  
Métadonnées relatives à la requête.

**httpSourceId**  
L'ID de la ressource associée :   
+ Pour une CloudFront distribution Amazon, l'ID est celui indiqué `distribution-id` dans la syntaxe de l'ARN : 

  `arn:partitioncloudfront::account-id:distribution/distribution-id` 
+ Pour un Application Load Balancer, l'ID est le suivant `load-balancer-id` dans la syntaxe de l'ARN : 

  `arn:partition:elasticloadbalancing:region:account-id:loadbalancer/app/load-balancer-name/load-balancer-id`
+ Pour une API REST Amazon API Gateway, l'ID est celui `api-id` indiqué dans la syntaxe ARN : 

  `arn:partition:apigateway:region::/restapis/api-id/stages/stage-name`
+ Pour une API AWS AppSync GraphQL, l'ID est celui indiqué `GraphQLApiId` dans la syntaxe de l'ARN : 

  `arn:partition:appsync:region:account-id:apis/GraphQLApiId`
+ Pour un groupe d'utilisateurs Amazon Cognito, l'identifiant est celui indiqué `user-pool-id` dans la syntaxe ARN : 

  `arn:partition:cognito-idp:region:account-id:userpool/user-pool-id`
+ Pour un AWS App Runner service, l'ID est celui indiqué `apprunner-service-id` dans la syntaxe de l'ARN : 

  `arn:partition:apprunner:region:account-id:service/apprunner-service-name/apprunner-service-id`

**httpSourceName**  
Source de la requête. Valeurs possibles : `CF` pour Amazon CloudFront, `APIGW` pour Amazon API Gateway, `ALB` pour Application Load Balancer, `APPSYNC` pour, pour Amazon Cognito AWS AppSync`APPRUNNER`, `COGNITOIDP` pour App Runner `VERIFIED_ACCESS` et pour Verified Access.

**httpVersion**  
Version de HTTP.

**Empreinte digitale JA3**  
L' JA3 empreinte digitale de la demande.  
JA3 l'inspection des empreintes digitales n'est disponible que pour les CloudFront distributions Amazon et les équilibreurs de charge d'application.
L' JA3 empreinte digitale est un hachage de 32 caractères dérivé du client TLS Hello d'une demande entrante. Cette empreinte sert d'identifiant unique pour la configuration TLS du client. AWS WAF calcule et enregistre cette empreinte pour chaque demande contenant suffisamment d'informations TLS Client Hello pour le calcul.   
Vous fournissez cette valeur lorsque vous configurez une correspondance JA3 d'empreintes digitales dans les règles de votre pack de protection (ACL Web). Pour plus d'informations sur la création d'une correspondance par rapport à l' JA3empreinte digitale, reportez-vous [JA3 empreinte digitale](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja3-fingerprint) à l'instruction [Demandez des composants dans AWS WAF](waf-rule-statement-fields-list.md) for a rule.

**Empreinte digitale JA4**  
L' JA4 empreinte digitale de la demande.  
JA4 l'inspection des empreintes digitales n'est disponible que pour les CloudFront distributions Amazon et les équilibreurs de charge d'application.
L' JA4 empreinte digitale est un hachage de 36 caractères dérivé du client TLS Hello d'une demande entrante. Cette empreinte sert d'identifiant unique pour la configuration TLS du client. AWS WAF calcule et enregistre cette empreinte pour chaque demande contenant suffisamment d'informations TLS Client Hello pour le calcul.   
Vous fournissez cette valeur lorsque vous configurez une correspondance JA4 d'empreintes digitales dans les règles de votre pack de protection (ACL Web). Pour plus d'informations sur la création d'une correspondance par rapport à l' JA4empreinte digitale, reportez-vous [JA4 empreinte digitale](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja4-fingerprint) à l'instruction [Demandez des composants dans AWS WAF](waf-rule-statement-fields-list.md) for a rule.

**labels**  
Les étiquettes figurant sur la demande Web. Ces labels ont été appliqués par des règles qui ont été utilisées pour évaluer la demande. AWS WAF enregistre les 100 premières étiquettes. 

**nonTerminatingMatchingRègles**  
Liste des règles non résilientes correspondant à la demande. Chaque élément de la liste contient les informations suivantes.     
action  
Action AWS WAF appliquée à la demande. Cela indique soit le nombre, soit le CAPTCHA, soit le défi. ChallengeLes CAPTCHA et ne se terminent pas lorsque la requête Web contient un jeton valide.  
ruleId  
L'ID de la règle qui correspondait à la demande et qui ne se terminait pas.   
ruleMatchDetails  
Informations détaillées sur la règle correspondant à la demande. Ce champ est uniquement renseigné pour les instructions de règles d'injection SQL et de correspondance entre les scripts intersites (XSS). Une règle de correspondance peut nécessiter une correspondance pour plusieurs critères d'inspection. Ces détails de correspondance sont donc fournis sous la forme d'un tableau de critères de correspondance. 
Toute information supplémentaire fournie pour chaque règle varie en fonction de facteurs tels que la configuration de la règle, le type de correspondance des règles et les détails de la correspondance. Par exemple, pour les règles comportant une Challenge action CAPTCHA ou, le `captchaResponse` ou `challengeResponse` sera répertorié. Si la règle correspondante se trouve dans un groupe de règles et que vous avez remplacé son action de règle configurée, l'action configurée sera fournie dans. `overriddenAction` 

**Champs surdimensionnés**  
Liste des champs de la requête Web qui ont été inspectés par le pack de protection (ACL Web) et qui dépassent la limite AWS WAF d'inspection. Si un champ est surdimensionné mais que le pack de protection (ACL Web) ne l'inspecte pas, il ne sera pas répertorié ici.   
Cette liste peut contenir zéro ou plusieurs des valeurs suivantes : `REQUEST_BODY``REQUEST_JSON_BODY`,`REQUEST_HEADERS`, et`REQUEST_COOKIES`. Pour plus d'informations sur les champs surdimensionnés, consultez[Composants de requête Web surdimensionnés dans AWS WAF](waf-oversize-request-components.md).

**rateBasedRuleListe**  
Liste de règles basées sur le débit qui ont agi sur la requête. Pour plus d'informations sur les règles basées sur les taux, consultez[Utilisation d'instructions de règles basées sur le taux dans AWS WAF](waf-rule-statement-type-rate-based.md).    
rateBasedRuleId  
ID de la règle basée sur le débit qui a agi sur la requête. Si cette règle a résilié la requête, l'ID pour `rateBasedRuleId` est le même que pour `terminatingRuleId`.  
rateBasedRuleNom  
Nom de la règle basée sur le taux qui a donné suite à la demande.   
limitKey  
Type d'agrégation utilisé par la règle. Les valeurs possibles concernent l'origine de la `IP` demande Web, `FORWARDED_IP` une adresse IP transmise dans un en-tête de la `CUSTOMKEYS` demande, des paramètres clés agrégés personnalisés et `CONSTANT` le comptage de toutes les demandes ensemble, sans agrégation.   
Valeur limite  
Utilisé uniquement en cas de limitation du débit par un seul type d'adresse IP. Si une demande contient une adresse IP non valide, `limitvalue` c'est`INVALID`.  
maxRateAllowed  
Le nombre maximum de demandes autorisées dans la fenêtre temporelle spécifiée pour une instance d'agrégation spécifique. L'instance d'agrégation est définie par l'ajout `limitKey` de toutes les spécifications clés supplémentaires que vous avez fournies dans la configuration des règles basées sur le taux.   
evaluationWindowSec  
Le temps AWS WAF inclus dans sa demande compte, en secondes.   
Valeurs personnalisées  
Valeurs uniques identifiées par la règle basée sur le taux dans la demande. Pour les valeurs de chaîne, les journaux impriment les 32 premiers caractères de la valeur de chaîne. Selon le type de clé, ces valeurs peuvent être uniquement pour une clé, comme pour la méthode HTTP ou la chaîne de requête, ou pour une clé et un nom, comme pour l'en-tête et le nom de l'en-tête. 

**requestHeadersInserted**  
La liste des en-têtes insérés pour le traitement personnalisé des demandes.

**requestId**  
ID de la demande, qui est généré par le service hôte sous-jacent. Pour Application Load Balancer, il s'agit de l'ID de trace. Pour tous les autres, il s'agit de l'ID de demande. 

**responseCodeSent**  
Le code de réponse envoyé avec une réponse personnalisée.

**ruleGroupId**  
ID du groupe de règles. Si la règle a bloqué la requête, l'ID pour `ruleGroupID` est le même que pour `terminatingRuleId`. 

**ruleGroupList**  
Liste des groupes de règles ayant répondu à cette demande, avec les informations correspondantes.

**terminatingRule**  
Règle qui a mis fin à la demande. S'il est présent, il contient les informations suivantes.     
action  
Action de fin AWS WAF appliquée à la demande. Cela indique une autorisation, un blocage, un CAPTCHA ou un défi. Les Challenge actions CAPTCHA et prennent fin lorsque la requête Web ne contient pas de jeton valide.  
ruleId  
ID de la règle correspondant à la demande.   
ruleMatchDetails  
Informations détaillées sur la règle correspondant à la demande. Ce champ est uniquement renseigné pour les instructions de règles d'injection SQL et de correspondance entre les scripts intersites (XSS). Une règle de correspondance peut nécessiter une correspondance pour plusieurs critères d'inspection. Ces détails de correspondance sont donc fournis sous la forme d'un tableau de critères de correspondance. 
Toute information supplémentaire fournie pour chaque règle varie en fonction de facteurs tels que la configuration de la règle, le type de correspondance des règles et les détails de la correspondance. Par exemple, pour les règles comportant une Challenge action CAPTCHA ou, le `captchaResponse` ou `challengeResponse` sera répertorié. Si la règle correspondante se trouve dans un groupe de règles et que vous avez remplacé son action de règle configurée, l'action configurée sera fournie dans. `overriddenAction` 

**terminatingRuleId**  
ID de la règle qui a résilié la requête. Si rien ne résilie la requête, la valeur est `Default_Action`.

**terminatingRuleMatchDétails**  
Informations détaillées sur la règle de fin correspondant à la demande. Une règle de fin comporte une action qui met fin au processus d'inspection par rapport à une demande Web. Les actions possibles pour une règle de résiliation sont les suivantes : AllowBlock,CAPTCHA, etChallenge. Lors de l'inspection d'une requête Web, la première règle qui correspond à la demande et qui comporte une action de fin AWS WAF arrête l'inspection et applique l'action. La requête Web peut contenir d'autres menaces, en plus de celle signalée dans le journal pour la règle de terminaison correspondante.  
Cette information n'est renseignée que pour les instructions de règle de correspondance d'injection SQL et de script inter-site (XSS). La règle de correspondance peut nécessiter une correspondance pour plusieurs critères d'inspection. Ces détails de correspondance sont donc fournis sous la forme d'un tableau de critères de correspondance. 

**terminatingRuleType**  
Type de règle qui a résilié la requête. Valeurs possibles : RATE\$1BASED, REGULAR, GROUP et MANAGED\$1RULE\$1GROUP.

**timestamp**  
L'horodatage en millisecondes.

**uri**  
URI de la requête. 

**fragment**  
Partie d'une URL qui suit le symbole « \$1 » et qui fournit des informations supplémentaires sur la ressource, par exemple \$1section2.

**webaclId**  
GUID du pack de protection (ACL Web).

# Exemples de journaux pour le trafic du pack de protection (ACL Web)
<a name="logging-examples"></a>

Cette section fournit des exemples de journalisation du trafic du pack de protection (ACL Web).

**Example Règle 1 basée sur le taux : configuration des règles avec une seule clé, définie sur `Header:dogname`**  

```
    {
      "Name": "RateBasedRule",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 100,
          "AggregateKeyType": "CUSTOM_KEYS",
          "CustomKeys": [
            {
              "Header": {
                "Name": "dogname",
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RateBasedRule"
      }
    }
```

**Example Règle basée sur le taux 1 : entrée dans le journal pour une demande bloquée par une règle basée sur le taux**  

```
{
   "timestamp":1683355579981,
   "formatVersion":1,
   "webaclId": ...,
   "terminatingRuleId":"RateBasedRule",
   "terminatingRuleType":"RATE_BASED",
   "action":"BLOCK",
   "terminatingRuleMatchDetails":[
      
   ],
   "httpSourceName":"APIGW",
   "httpSourceId":"EXAMPLE11:rjvegx5guh:CanaryTest",
   "ruleGroupList":[
      
   ],
   "rateBasedRuleList":[
      {
         "rateBasedRuleId": ...,
         "rateBasedRuleName":"RateBasedRule",
         "limitKey":"CUSTOMKEYS",
         "maxRateAllowed":100,
         "evaluationWindowSec":"120",
         "customValues":[
            {
               "key":"HEADER",
               "name":"dogname",
               "value":"ella"
            }
         ]
      }
   ],
   "nonTerminatingMatchingRules":[
      
   ],
   "requestHeadersInserted":null,
   "responseCodeSent":null,
   "httpRequest":{
      "clientIp":"52.46.82.45",
      "country":"FR",
      "headers":[
         {
            "name":"X-Forwarded-For",
            "value":"52.46.82.45"
         },
         {
            "name":"X-Forwarded-Proto",
            "value":"https"
         },
         {
            "name":"X-Forwarded-Port",
            "value":"443"
         },
         {
            "name":"Host",
            "value":"rjvegx5guh.execute-api.eu-west-3.amazonaws.com"
         },
         {
            "name":"X-Amzn-Trace-Id",
            "value":"Root=1-645566cf-7cb058b04d9bb3ee01dc4036"
         },
         {
            "name":"dogname",
            "value":"ella"
         },
         {
            "name":"User-Agent",
            "value":"RateBasedRuleTestKoipOneKeyModulePV2"
         },
         {
            "name":"Accept-Encoding",
            "value":"gzip,deflate"
         }
      ],
      "uri":"/CanaryTest",
      "args":"",
      "httpVersion":"HTTP/1.1",
      "httpMethod":"GET",
      "requestId":"Ed0AiHF_CGYF-DA="
   }
}
```

**Example Règle 2 basée sur le taux : configuration des règles avec deux clés, définies sur et `Header:dogname` `Header:catname`**  

```
    {
      "Name": "RateBasedRule",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 100,
          "AggregateKeyType": "CUSTOM_KEYS",
          "CustomKeys": [
            {
              "Header": {
                "Name": "dogname",
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            },
            {
              "Header": {
                "Name": "catname",
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RateBasedRule"
      }
    }
```

**Example Règle basée sur le taux 2 : entrée dans le journal pour une demande bloquée par une règle basée sur le taux**  

```
{
   "timestamp":1633322211194,
   "formatVersion":1,
   "webaclId":...,
   "terminatingRuleId":"RateBasedRule",
   "terminatingRuleType":"RATE_BASED",
   "action":"BLOCK",
   "terminatingRuleMatchDetails":[
      
   ],
   "httpSourceName":"APIGW",
   "httpSourceId":"EXAMPLE11:rjvegx5guh:CanaryTest",
   "ruleGroupList":[
      
   ],
   "rateBasedRuleList":[
      {
         "rateBasedRuleId":...,
         "rateBasedRuleName":"RateBasedRule",
         "limitKey":"CUSTOMKEYS",
         "maxRateAllowed":100,
         "evaluationWindowSec":"120",
         "customValues":[
            {
               "key":"HEADER",
               "name":"dogname",
               "value":"ella"
            },
            {
               "key":"HEADER",
               "name":"catname",
               "value":"goofie"
            }
         ]
      }
   ],
   "nonTerminatingMatchingRules":[
      
   ],
   "requestHeadersInserted":null,
   "responseCodeSent":null,
   "httpRequest":{
      "clientIp":"52.46.82.35",
      "country":"FR",
      "headers":[
         {
            "name":"X-Forwarded-For",
            "value":"52.46.82.35"
         },
         {
            "name":"X-Forwarded-Proto",
            "value":"https"
         },
         {
            "name":"X-Forwarded-Port",
            "value":"443"
         },
         {
            "name":"Host",
            "value":"23llbyn8v3.execute-api.eu-west-3.amazonaws.com"
         },
         {
            "name":"X-Amzn-Trace-Id",
            "value":"Root=1-64556629-17ac754c2ed9f0620e0f2a0c"
         },
         {
            "name":"catname",
            "value":"goofie"
         },
         {
            "name":"dogname",
            "value":"ella"
         },
         {
            "name":"User-Agent",
            "value":"Apache-HttpClient/UNAVAILABLE (Java/11.0.19)"
         },
         {
            "name":"Accept-Encoding",
            "value":"gzip,deflate"
         }
      ],
      "uri":"/CanaryTest",
      "args":"",
      "httpVersion":"HTTP/1.1",
      "httpMethod":"GET",
      "requestId":"EdzmlH5OCGYF1vQ="
   }
}
```

**Example Sortie du journal pour une règle qui s'est déclenchée lors SQLi de la détection (arrêt)**  

```
{
    "timestamp": 1576280412771,
    "formatVersion": 1,
    "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE",
    "terminatingRuleId": "STMTest_SQLi_XSS",
    "terminatingRuleType": "REGULAR",
    "action": "BLOCK",
    "terminatingRuleMatchDetails": [
        {
            "conditionType": "SQL_INJECTION",
            "sensitivityLevel": "HIGH",
            "location": "HEADER",
            "matchedData": [
                "10",
                "AND",
                "1"
            ]
        }
    ],
    "httpSourceName": "-",
    "httpSourceId": "-",
    "ruleGroupList": [],
    "rateBasedRuleList": [],
    "nonTerminatingMatchingRules": [],
    "httpRequest": {
        "clientIp": "1.1.1.1",
        "country": "AU",
        "headers": [
            {
                "name": "Host",
                "value": "localhost:1989"
            },
            {
                "name": "User-Agent",
                "value": "curl/7.61.1"
            },
            {
                "name": "Accept",
                "value": "*/*"
            },
            {
                "name": "x-stm-test",
                "value": "10 AND 1=1"
            }
        ],
        "uri": "/myUri",
        "args": "",
        "httpVersion": "HTTP/1.1",
        "httpMethod": "GET",
        "requestId": "rid"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example Sortie du journal pour une règle qui s'est déclenchée lors SQLi de la détection (non résiliable)**  

```
{
    "timestamp":1592357192516
    ,"formatVersion":1
    ,"webaclId":"arn:aws:wafv2:us-east-1:123456789012:global/webacl/hello-world/5933d6d9-9dde-js82-v8aw-9ck28nv9"
    ,"terminatingRuleId":"Default_Action"
    ,"terminatingRuleType":"REGULAR"
    ,"action":"ALLOW"
    ,"terminatingRuleMatchDetails":[]
    ,"httpSourceName":"-"
    ,"httpSourceId":"-"
    ,"ruleGroupList":[]
    ,"rateBasedRuleList":[]
    ,"nonTerminatingMatchingRules":
    [{
        "ruleId":"TestRule"
        ,"action":"COUNT"
        ,"ruleMatchDetails":
        [{
            "conditionType":"SQL_INJECTION"
            ,"sensitivityLevel": "HIGH"
            ,"location":"HEADER"
            ,"matchedData":[
                "10"
                ,"and"
                ,"1"]
            }]
    }]
    ,"httpRequest":{
        "clientIp":"3.3.3.3"
        ,"country":"US"
        ,"headers":[
            {"name":"Host","value":"localhost:1989"}
            ,{"name":"User-Agent","value":"curl/7.61.1"}
            ,{"name":"Accept","value":"*/*"}
            ,{"name":"myHeader","myValue":"10 AND 1=1"}
            ]
            ,"uri":"/myUri","args":""
            ,"httpVersion":"HTTP/1.1"
            ,"httpMethod":"GET"
            ,"requestId":"rid"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example Sortie du journal pour plusieurs règles déclenchées au sein d'un groupe de règles (Rulea-XSS se termine et Rule-B ne se termine pas)**  

```
{
    "timestamp":1592361810888,
    "formatVersion":1,
    "webaclId":"arn:aws:wafv2:us-east-1:123456789012:global/webacl/hello-world/5933d6d9-9dde-js82-v8aw-9ck28nv9"
    ,"terminatingRuleId":"RG-Reference"
    ,"terminatingRuleType":"GROUP"
    ,"action":"BLOCK",
    "terminatingRuleMatchDetails":
    [{
        "conditionType":"XSS"
        ,"location":"HEADER"
        ,"matchedData":["<","frameset"]
    }]
    ,"httpSourceName":"-"
    ,"httpSourceId":"-"
    ,"ruleGroupList":
    [{
        "ruleGroupId":"arn:aws:wafv2:us-east-1:123456789012:global/rulegroup/hello-world/c05lb698-1f11-4m41-aef4-99a506d53f4b"
        ,"terminatingRule":{
            "ruleId":"RuleA-XSS"
            ,"action":"BLOCK"
            ,"ruleMatchDetails":null
            }
        ,"nonTerminatingMatchingRules":
        [{
            "ruleId":"RuleB-SQLi"
            ,"action":"COUNT"
            ,"ruleMatchDetails":
            [{
                "conditionType":"SQL_INJECTION"
                ,"sensitivityLevel": "LOW"
                ,"location":"HEADER"
                ,"matchedData":[
                    "10"
                    ,"and"
                    ,"1"]
            }]
        }]
        ,"excludedRules":null
    }]
    ,"rateBasedRuleList":[]
    ,"nonTerminatingMatchingRules":[]
    ,"httpRequest":{
        "clientIp":"3.3.3.3"
        ,"country":"US"
        ,"headers":
        [
            {"name":"Host","value":"localhost:1989"}
            ,{"name":"User-Agent","value":"curl/7.61.1"}
            ,{"name":"Accept","value":"*/*"}
            ,{"name":"myHeader1","value":"<frameset onload=alert(1)>"}
            ,{"name":"myHeader2","value":"10 AND 1=1"}
            ]
        ,"uri":"/myUri"
        ,"args":""
        ,"httpVersion":"HTTP/1.1"
        ,"httpMethod":"GET"
        ,"requestId":"rid"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example Sortie du journal pour une règle déclenchée pour l'inspection du corps de la demande avec le type de contenu JSON**  
AWS WAF indique actuellement l'emplacement de l'inspection du corps JSON sous la forme`UNKNOWN`.  

```
{
    "timestamp": 1576280412771,
    "formatVersion": 1,
    "webaclId": "arn:aws:wafv2:ap-southeast-2:123456789012:regional/webacl/test/111",
    "terminatingRuleId": "STMTest_SQLi_XSS",
    "terminatingRuleType": "REGULAR",
    "action": "BLOCK",
    "terminatingRuleMatchDetails": [
        {
            "conditionType": "SQL_INJECTION",
            "sensitivityLevel": "LOW",
            "location": "UNKNOWN",
            "matchedData": [
                "10",
                "AND",
                "1"
            ]
        }
    ],
    "httpSourceName": "ALB",
    "httpSourceId": "alb",
    "ruleGroupList": [],
    "rateBasedRuleList": [],
    "nonTerminatingMatchingRules": [],
    "requestHeadersInserted":null,
    "responseCodeSent":null,
    "httpRequest": {
        "clientIp": "1.1.1.1",
        "country": "AU",
        "headers": [],
        "uri": "",
        "args": "",
        "httpVersion": "HTTP/1.1",
        "httpMethod": "POST",
        "requestId": "null"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example Sortie du journal pour une règle CAPTCHA par rapport à une requête Web avec un jeton CAPTCHA valide et non expiré**  
La liste de journaux suivante concerne une requête Web correspondant à une règle et à une CAPTCHA action. La requête Web contient un jeton CAPTCHA valide et non expiré, et elle est uniquement notée comme une correspondance CAPTCHA par AWS WAF, de la même manière que le comportement de l'action. Count Cette correspondance CAPTCHA est indiquée ci-dessous. `nonTerminatingMatchingRules`  

```
{
  "timestamp": 1632420429309,
  "formatVersion": 1,
  "webaclId": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/captcha-web-acl/585e38b5-afce-4d2a-b417-14fb08b66c67",
  "terminatingRuleId": "Default_Action",
  "terminatingRuleType": "REGULAR",
  "action": "ALLOW",
  "terminatingRuleMatchDetails": [],
  "httpSourceName": "APIGW",
  "httpSourceId": "123456789012:b34myvfw0b:pen-test",
  "ruleGroupList": [],
  "rateBasedRuleList": [],
  "nonTerminatingMatchingRules": [
    {
      "ruleId": "captcha-rule",
      "action": "CAPTCHA",
      "ruleMatchDetails": [],
      "captchaResponse": {
        "responseCode": 0,
        "solveTimestamp": 1632420429
      }
    }
  ],
  "requestHeadersInserted": [
    {
      "name": "x-amzn-waf-test-header-name",
      "value": "test-header-value"
    }
  ],
  "responseCodeSent": null,
  "httpRequest": {
    "clientIp": "72.21.198.65",
    "country": "US",
    "headers": [
      {
        "name": "X-Forwarded-For",
        "value": "72.21.198.65"
      },
      {
        "name": "X-Forwarded-Proto",
        "value": "https"
      },
      {
        "name": "X-Forwarded-Port",
        "value": "443"
      },
      {
        "name": "Host",
        "value": "b34myvfw0b.gamma.execute-api.us-east-1.amazonaws.com"
      },
      {
        "name": "X-Amzn-Trace-Id",
        "value": "Root=1-614cc24d-5ad89a09181910c43917a888"
      },
      {
        "name": "cache-control",
        "value": "max-age=0"
      },
      {
        "name": "sec-ch-ua",
        "value": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\""
      },
      {
        "name": "sec-ch-ua-mobile",
        "value": "?0"
      },
      {
        "name": "sec-ch-ua-platform",
        "value": "\"Windows\""
      },
      {
        "name": "upgrade-insecure-requests",
        "value": "1"
      },
      {
        "name": "user-agent",
        "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"
      },
      {
        "name": "accept",
        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
      },
      {
        "name": "sec-fetch-site",
        "value": "same-origin"
      },
      {
        "name": "sec-fetch-mode",
        "value": "navigate"
      },
      {
        "name": "sec-fetch-user",
        "value": "?1"
      },
      {
        "name": "sec-fetch-dest",
        "value": "document"
      },
      {
        "name": "referer",
        "value": "https://b34myvfw0b.gamma.execute-api.us-east-1.amazonaws.com/pen-test/pets"
      },
      {
        "name": "accept-encoding",
        "value": "gzip, deflate, br"
      },
      {
        "name": "accept-language",
        "value": "en-US,en;q=0.9"
      },
      {
        "name": "cookie",
        "value": "aws-waf-token=51c71352-41f5-4f6d-b676-c24907bdf819:EQoAZ/J+AAQAAAAA:t9wvxbw042wva7E2Y6lgud/bS6YG0CJKVAJqaRqDZ140ythKW0Zj9wKB2O8lSkYDRqf1yONcVBFo5u0eYi0tvT4rtQCXsu+KanAardW8go4QSLw4yoED59lgV7oAhGyCalAzE7ra29j+RvvZPsQyoQuDCrtoY/TvQyMTXIXzGPDC/rKBbg=="
      }
    ],
    "uri": "/pen-test/pets",
    "args": "",
    "httpVersion": "HTTP/1.1",
    "httpMethod": "GET",
    "requestId": "GINMHHUgoAMFxug="
  }
}
```

**Example Sortie du journal pour une règle CAPTCHA par rapport à une requête Web qui ne contient pas de jeton CAPTCHA**  
La liste de journaux suivante concerne une requête Web correspondant à une règle et à une CAPTCHA action. La requête Web ne comportait pas de jeton CAPTCHA et a été bloquée par. AWS WAF  

```
{
  "timestamp": 1632420416512,
  "formatVersion": 1,
  "webaclId": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/captcha-web-acl/585e38b5-afce-4d2a-b417-14fb08b66c67",
  "terminatingRuleId": "captcha-rule",
  "terminatingRuleType": "REGULAR",
  "action": "CAPTCHA",
  "terminatingRuleMatchDetails": [],
  "httpSourceName": "APIGW",
  "httpSourceId": "123456789012:b34myvfw0b:pen-test",
  "ruleGroupList": [],
  "rateBasedRuleList": [],
  "nonTerminatingMatchingRules": [],
  "requestHeadersInserted": null,
  "responseCodeSent": 405,
  "httpRequest": {
    "clientIp": "72.21.198.65",
    "country": "US",
    "headers": [
      {
        "name": "X-Forwarded-For",
        "value": "72.21.198.65"
      },
      {
        "name": "X-Forwarded-Proto",
        "value": "https"
      },
      {
        "name": "X-Forwarded-Port",
        "value": "443"
      },
      {
        "name": "Host",
        "value": "b34myvfw0b.gamma.execute-api.us-east-1.amazonaws.com"
      },
      {
        "name": "X-Amzn-Trace-Id",
        "value": "Root=1-614cc240-18b57ff33c10e5c016b508c5"
      },
      {
        "name": "sec-ch-ua",
        "value": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\""
      },
      {
        "name": "sec-ch-ua-mobile",
        "value": "?0"
      },
      {
        "name": "sec-ch-ua-platform",
        "value": "\"Windows\""
      },
      {
        "name": "upgrade-insecure-requests",
        "value": "1"
      },
      {
        "name": "user-agent",
        "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"
      },
      {
        "name": "accept",
        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
      },
      {
        "name": "sec-fetch-site",
        "value": "cross-site"
      },
      {
        "name": "sec-fetch-mode",
        "value": "navigate"
      },
      {
        "name": "sec-fetch-user",
        "value": "?1"
      },
      {
        "name": "sec-fetch-dest",
        "value": "document"
      },
      {
        "name": "accept-encoding",
        "value": "gzip, deflate, br"
      },
      {
        "name": "accept-language",
        "value": "en-US,en;q=0.9"
      }
    ],
    "uri": "/pen-test/pets",
    "args": "",
    "httpVersion": "HTTP/1.1",
    "httpMethod": "GET",
    "requestId": "GINKHEssoAMFsrg="
  },
  "captchaResponse": {
    "responseCode": 405,
    "solveTimestamp": 0,
    "failureReason": "TOKEN_MISSING"
  }
}
```