

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.

# Enregistrement de demandes avec journalisation des accès au serveur
<a name="ServerLogs"></a>

La journalisation des accès au serveur fournit des enregistrements détaillés pour les demandes soumises à un compartiment. Les journaux d'accès au serveur sont utiles pour de nombreuses applications. Par exemple, les informations des journaux d’accès peuvent s’avérer utiles en cas d’audit de sécurité ou d’audit des accès. Ces informations peuvent également vous aider à en savoir plus sur votre clientèle et à comprendre votre facture Amazon S3.

**Note**  
Les journaux d’accès au serveur n’enregistrent pas les informations concernant les erreurs de redirection en cas de région incorrecte pour les régions lancées après le 20 mars 2019. Les erreurs de redirection en cas de région incorrecte se produisent lorsqu’une demande pour un objet ou un compartiment est effectuée en dehors de la région où se trouve le compartiment. 

## Comment activer la livraison des journaux ?
<a name="server-access-logging-overview"></a>

Suivez ces quelques étapes pour activer la livraison des journaux. Pour plus d’informations, consultez [Activation de la journalisation des accès au serveur Amazon S3](enable-server-access-logging.md).

1. **Indiquez le nom du compartiment de destination** (également appelé *compartiment cible*). Amazon S3 enregistrera dans ce compartiment les journaux d’accès en tant qu’objets. Les compartiments source et de destination doivent être dans la même Région AWS et appartenir au même compte. Le compartiment de destination ne doit pas avoir de configuration de période de rétention par défaut pour le verrouillage d’objet S3. Le paiement par le demandeur ne doit pas non plus être activé pour le compartiment de destination.

   Les journaux peuvent être fournis dans n’importe quel compartiment que vous possédez qui est situé dans la même Région que le compartiment source, y compris le compartiment source lui-même. Mais pour simplifier la gestion des journaux, nous vous recommandons d’enregistrer les journaux d’accès dans un autre compartiment. 

   Lorsque votre compartiment source et votre compartiment de destination correspondent au même compartiment, des journaux supplémentaires sont créés pour les journaux qui sont écrits dans le compartiment, ce qui crée une boucle infinie de journaux. Nous ne recommandons pas de procéder ainsi, car cela peut entraîner une légère augmentation de votre facture de stockage. En outre, les journaux supplémentaires concernant les journaux peuvent rendre plus difficile la recherche du journal que vous recherchez. 

   Si vous choisissez d’enregistrer les journaux d’accès dans le compartiment source, nous vous recommandons de spécifier un préfixe de destination (également appelé *préfixe cible*) pour toutes les clés d’objets journaux. Lorsque vous spécifiez un préfixe, tous les noms des objets journaux commencent par une chaîne commune, ce qui facilite l’identification des objets journaux. 

1. **(Facultatif) Affectez un préfixe de destination à toutes les clés d’objets journaux Amazon S3.** Le préfixe de destination (également appelé *préfixe cible*) vous aide à localiser les objets journaux. Par exemple, si vous spécifiez la valeur de préfixe `logs/`, chaque objet journal créé par Amazon S3 commence par le préfixe `logs/` dans sa clé, par exemple :

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```

   Si vous spécifiez la valeur de préfixe `logs`, l’objet journal apparaît comme suit :

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

   Les [préfixes](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) sont également utiles pour distinguer les compartiments sources lorsque plusieurs compartiments sont journalisés dans le même compartiment de destination.

   Ce préfixe peut également s’avérer utile lors de la suppression des journaux. Par exemple, vous pouvez définir une règle de configuration du cycle de vie pour qu’Amazon S3 supprime les objets dotés d’un préfixe spécifique. Pour plus d’informations, consultez [Suppression des fichiers journaux Amazon S3](deleting-log-files-lifecycle.md).

1. **(Facultatif) Définissez des autorisations **pour que d’autres utilisateurs puissent accéder aux journaux générés.** Par défaut, seul le propriétaire du compartiment possède un accès total aux objets des journaux. Si votre compartiment de destination utilise le paramètre imposé par le propriétaire du compartiment pour S3 Object Ownership afin de désactiver les listes de contrôle d'accès (ACLs), vous ne pouvez pas accorder d'autorisations dans les autorisations de destination (également appelées *autorisations cibles*) qui utilisent ACLs. Toutefois, vous pouvez mettre à jour votre stratégie de compartiment pour le compartiment de destination afin d’accorder l’accès à d’autres personnes. Pour plus d’informations, consultez [Gestion des identités et des accès pour Amazon S3](security-iam.md) et [Autorisations de diffusion de journaux](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

1. **(Facultatif) Définissez un format de clé d’objet journal pour les fichiers journaux.** Deux options s’offrent à vous pour le format de clé d’objet journal (également appelé *format de clé d’objet cible*) : 
   + **Non-date-based partitionnement** — Il s'agit du format de clé de l'objet journal d'origine. Si vous choisissez ce format, le format de clé de fichier journal apparaît comme suit : 

     ```
     [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     Par exemple, si vous spécifiez `logs/` comme préfixe, vos objets journaux sont nommés comme suit : 

     ```
     logs/2013-11-01-21-32-16-E568B2907131C0C0
     ```
   + **Partitionnement basé sur la date** : si vous choisissez un partitionnement basé sur la date, vous pouvez choisir l’heure de l’événement ou l’heure de livraison du fichier journal comme source de date utilisée dans le format de journal. Ce format facilite l’interrogation des journaux.

     Si vous choisissez un partitionnement basé sur la date, le format de clé de fichier journal apparaît comme suit : 

     ```
     [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     Par exemple, si vous spécifiez `logs/` comme préfixe cible, vos objets journaux sont nommés comme suit :

     ```
     logs/123456789012/us-west-2/amzn-s3-demo-source-bucket/2023/03/01/2023-03-01-21-32-16-E568B2907131C0C0
     ```

     Pour la livraison de l’heure de livraison, l’heure indiquée dans les noms des fichiers journaux correspond à l’heure de livraison des fichiers journaux. 

     Pour la livraison de l’heure d’événement, l’année, le mois et le jour correspondent au jour où l’événement s’est produit, et l’heure, les minutes et les secondes sont définies sur `00` dans la clé. Les journaux livrés dans ces fichiers journaux se rapportent à un jour spécifique uniquement. 

   

   Si vous configurez vos journaux via AWS Command Line Interface (AWS CLI) ou l'API REST Amazon S3 AWS SDKs, utilisez-le `TargetObjectKeyFormat` pour spécifier le format de clé de l'objet du journal. Pour spécifier le non-date-based partitionnement, utilisez`SimplePrefix`. Pour spécifier un partitionnement basé sur la date, utilisez `PartitionedPrefix`. Si vous utilisez `PartitionedPrefix`, utilisez `PartitionDateSource` pour spécifier `EventTime` ou `DeliveryTime`.

   Pour `SimplePrefix`, le format de clé de fichier journal apparaît comme suit :

   ```
   [TargetPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

   Pour `PartitionedPrefix` avec l’heure d’événement ou l’heure de livraison, le format de clé de fichier journal apparaît comme suit :

   ```
   [TargetPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

## Format de clé d’objet journal
<a name="server-log-keyname-format"></a>

Amazon S3 utilise les formats de clé d’objet suivants pour les objets journaux qu’il charge dans le compartiment de destination :
+ **Non-date-based partitionnement** — Il s'agit du format de clé de l'objet journal d'origine. Si vous choisissez ce format, le format de clé de fichier journal apparaît comme suit : 

  ```
  [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```
+ **Partitionnement basé sur la date** : si vous choisissez un partitionnement basé sur la date, vous pouvez choisir l’heure de l’événement ou l’heure de livraison du fichier journal comme source de date utilisée dans le format de journal. Ce format facilite l’interrogation des journaux.

  Si vous choisissez un partitionnement basé sur la date, le format de clé de fichier journal apparaît comme suit : 

  ```
  [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```

Dans la clé d’objet journal, `YYYY`, `MM`, `DD`, `hh`, `mm` et `ss` correspondent (respectivement) à l’année, au mois, au jour, aux heures, aux minutes et aux secondes. Ces dates et heures sont exprimées en heure UTC (temps universel coordonné). 

Un fichier journal distribué à un moment précis peut contenir des enregistrements écrits à tout moment avant ce moment. Il n’existe aucun moyen de savoir si tous les enregistrements d’un intervalle de temps donné ont été distribués. 

Le composant `UniqueString` de la clé empêche le remplacement des fichiers. Il n’a aucune signification, et doit être ignoré par les logiciels de traitement des journaux. 

## Comment sont distribués les journaux ?
<a name="how-logs-delivered"></a>

Amazon S3 collecte régulièrement les enregistrements des journaux d’accès, consolide ces enregistrements dans des fichiers journaux, puis charge les fichiers journaux dans le compartiment de destination comme objets journaux. Si vous activez la journalisation sur plusieurs compartiments sources qui identifient le même compartiment de destination, ce dernier dispose de journaux d’accès pour tous ces compartiments sources. Cependant, chaque objet journal contient des enregistrements de journal d’accès pour un compartiment source spécifique. 

Amazon S3 utilise un compte de livraison de journaux spécial pour écrire des journaux d’accès au serveur. Ces journaux sont sujets aux restrictions habituelles de contrôle d’accès en écriture. Nous vous recommandons de mettre à jour la stratégie de compartiment sur le compartiment de destination pour accorder l’accès au principal du service de journalisation (`logging.s3.amazonaws.com`) pour la livraison des journaux des accès. Vous pouvez également accorder l’accès pour la livraison des journaux des d’accès au groupe de livraison des journaux S3 via votre liste de contrôle d’accès (ACL) de compartiment. Toutefois, il n’est pas recommandé d’accorder l’accès au groupe de livraison des journaux S3 en utilisant votre liste ACL de compartiment. 

Lorsque vous activez la journalisation des accès au serveur et que vous accordez l’accès à la livraison des journaux des accès via votre stratégie de compartiment de destination, vous devez mettre à jour la politique pour autoriser l’accès `s3:PutObject` pour le principal du service de journalisation. Si vous utilisez la console Amazon S3 pour activer la journalisation des accès au serveur, la console met automatiquement à jour la stratégie de compartiment de destination, afin d’accorder ces autorisations au principal du service de journalisation. Pour plus d’informations sur l’accord d’autorisations pour la livraison de journaux d’accès au serveur, consultez [Autorisations de diffusion de journaux](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

**Note**  
S3 ne prend pas en charge la livraison de CloudTrail journaux ou de journaux d'accès au serveur au demandeur ou au propriétaire du compartiment pour les demandes de point de terminaison VPC lorsque la politique de point de terminaison du VPC les refuse ou pour les demandes qui échouent avant que la politique VPC ne soit évaluée.

**Paramètre bucket owner enforced (propriétaire du compartiment imposé) pour S3 Object Ownership (Propriété de l’objet S3)**  
Si le compartiment de destination utilise le paramètre imposé par le propriétaire du compartiment pour la propriété des objets, ACLs ils sont désactivés et n'affectent plus les autorisations. Vous devez mettre à jour la stratégie de compartiment sur le compartiment de destination pour accorder l’accès au principal du service de journalisation. Pour en savoir plus sur la propriété des objets, consultez [Octroi de l’accès au groupe de livraison des journaux S3 pour la journalisation des accès au serveur](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs).

## Livraison des journaux du serveur dans la mesure du possible
<a name="LogDeliveryBestEffort"></a>

Les enregistrements des journaux d’accès au serveur sont fournis dans la mesure du possible. La plupart des demandes pour un compartiment correctement configuré pour l’enregistrement se traduisent par un enregistrement de journal distribué. La plupart des enregistrements de journal sont fournis quelques heures après leur enregistrement, mais ils peuvent être livrés plus fréquemment. 

L’exhaustivité et la disponibilité de la journalisation du serveur ne sont pas garanties. Il se peut que l’enregistrement du journal pour une demande particulière soit fourni bien après le traitement de la demande, ou *ne soit fourni du tout*. Il est même possible que vous voyiez une duplication d’un enregistrement de journal. Le but des journaux du serveur est de vous donner une idée de la nature du trafic dans le compartiment. Bien qu’il soit rare de perdre des enregistrements de journaux ou de constater une duplication d’enregistrements de journaux, sachez que la journalisation du serveur n’a pas pour but de comptabiliser toutes les demandes.

En raison de la nature de la journalisation du serveur, visant un effort maximal, vos rapports d’utilisation peuvent inclure une ou plusieurs demandes qui n’apparaissent pas dans un journal de serveur livré. Ces rapports d’utilisation se trouvent sous **Rapports d’utilisation et de coût** dans la console AWS Billing and Cost Management .

## Les changements de statut de la journalisation des compartiments prennent effet au fil du temps
<a name="BucketLoggingStatusChanges"></a>

Les modifications du statut de l’état de journalisation d’un compartiment prennent du temps avant d’affecter réellement la distribution des fichiers journaux. Par exemple, si vous activez la journalisation pour un compartiment, certaines demandes faites dans l’heure qui suit peuvent être journalisées, alors que d’autres ne le sont pas. Supposons que vous changiez le compartiment de destination de la journalisation du compartiment A au compartiment B. L’heure suivante, certains journaux peuvent continuer à être livrés dans le compartiment A, tandis que d’autres peuvent être livrés dans le nouveau compartiment de destination B. Dans tous les cas, les nouveaux paramètres finissent par prendre effet sans aucune autre action de votre part. 

Pour plus d’informations sur la journalisation et les fichiers journaux, consultez les sections suivantes :

**Topics**
+ [Comment activer la livraison des journaux ?](#server-access-logging-overview)
+ [Format de clé d’objet journal](#server-log-keyname-format)
+ [Comment sont distribués les journaux ?](#how-logs-delivered)
+ [Livraison des journaux du serveur dans la mesure du possible](#LogDeliveryBestEffort)
+ [Les changements de statut de la journalisation des compartiments prennent effet au fil du temps](#BucketLoggingStatusChanges)
+ [Activation de la journalisation des accès au serveur Amazon S3](enable-server-access-logging.md)
+ [Format des journaux d’accès au serveur Amazon S3](LogFormat.md)
+ [Suppression des fichiers journaux Amazon S3](deleting-log-files-lifecycle.md)
+ [Utilisation des journaux d’accès au serveur Amazon S3 pour identifier des demandes](using-s3-access-logs-to-identify-requests.md)
+ [Résolution des problèmes de journalisation des accès au serveur](troubleshooting-server-access-logging.md)

# Activation de la journalisation des accès au serveur Amazon S3
<a name="enable-server-access-logging"></a>

La journalisation des accès au serveur fournit des enregistrements détaillés des demandes soumises à un compartiment Amazon S3. Les journaux d'accès au serveur sont utiles pour de nombreuses applications. Par exemple, les informations des journaux d’accès peuvent s’avérer utiles en cas d’audit de sécurité ou d’audit des accès. Ces informations peuvent également vous aider à en savoir plus sur votre clientèle et à comprendre votre facture Amazon S3.

Par défaut, Amazon S3 ne collecte pas les journaux d’accès au serveur. Lorsque vous activez la journalisation, Amazon S3 fournit les journaux d’accès pour un compartiment source dans un compartiment de destination (également appelé *compartiment cible*) de votre choix. Le compartiment de destination doit se trouver dans le même Région AWS compartiment Compte AWS que le compartiment source. 

Un enregistrement de journal d’accès contient des détails relatifs aux demandes soumises à un compartiment. Ces informations peuvent comprendre le type de demande, les ressources spécifiées dans la demande, ainsi que l’heure et la date du traitement de la demande. Pour plus d’informations sur les principes de base de la journalisation, consultez [Enregistrement de demandes avec journalisation des accès au serveur](ServerLogs.md). 

**Important**  
L’activation de la journalisation des accès au serveur sur un compartiment Amazon S3 n’entraîne aucuns frais supplémentaires. Toutefois, les fichiers journaux qui vous sont fournis par le système augmentent les coûts de stockage habituels. Notez que vous pouvez supprimer les fichiers journaux à tout moment. Nous n’évaluons pas les frais de transfert de données pour la livraison des fichiers journaux, mais nous facturons les frais standard de transfert de données pour l’accès aux fichiers journaux.
La journalisation des accès au serveur de votre compartiment de destination ne doit pas être activée. Les journaux peuvent être fournis dans n’importe quel compartiment que vous possédez qui est situé dans la même Région que le compartiment source, y compris le compartiment source lui-même. Toutefois, la livraison de journaux vers le compartiment source entraîne une boucle infinie de journaux et n’est pas recommandée. Pour simplifier la gestion des journaux, nous vous recommandons d’enregistrer les journaux d’accès dans un autre compartiment. Pour plus d’informations, consultez [Comment activer la livraison des journaux ?](ServerLogs.md#server-access-logging-overview).
Les compartiments S3 sur lesquels le verrouillage d’objet S3 est activé ne peuvent pas être utilisés comme compartiments de destination pour les journaux d’accès au serveur. Votre compartiment de destination ne doit pas avoir de configuration de période de rétention par défaut.
Le paiement par le demandeur ne doit pas être activé pour le compartiment de destination.

Vous pouvez activer ou désactiver la journalisation des accès au serveur à l'aide de la console Amazon S3, de l'API Amazon S3, du AWS Command Line Interface (AWS CLI) ou AWS SDKs. 

## Autorisations de diffusion de journaux
<a name="grant-log-delivery-permissions-general"></a>

Amazon S3 utilise un compte de livraison de journaux spécial pour écrire des journaux d'accès au serveur. Ces journaux sont sujets aux restrictions habituelles de contrôle d’accès en écriture. Pour la livraison des journaux des accès, vous devez accorder au principal du service de journalisation (`logging.s3.amazonaws.com`) l’accès à votre compartiment de destination.

Pour accorder des autorisations à Amazon S3 pour la livraison de logs, vous pouvez utiliser une politique de compartiment ou des listes de contrôle d'accès aux compartiments (ACLs), en fonction des paramètres de propriété des objets S3 de votre compartiment de destination. Cependant, nous vous recommandons d'utiliser une politique de compartiment à la place de ACLs. 

**Paramètre bucket owner enforced (propriétaire du compartiment imposé) pour S3 Object Ownership (Propriété de l’objet S3)**  
Si le compartiment de destination utilise le paramètre imposé par le propriétaire du compartiment pour la propriété des objets, ACLs ils sont désactivés et n'affectent plus les autorisations. Dans ce cas, vous devez mettre à jour la stratégie de compartiment pour le compartiment de destination afin d’accorder l’accès au principal du service de journalisation. Vous ne pouvez pas mettre à jour la liste ACL de votre compartiment pour accorder l’accès au groupe de mise à disposition des journaux S3. Vous ne pouvez pas non plus inclure des octrois de destination (également appelés *octrois cibles*) dans votre configuration [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). 

Pour plus d'informations sur la migration d'un bucket existant ACLs pour la livraison des journaux d'accès vers une politique de bucket, consultez[Octroi de l’accès au groupe de livraison des journaux S3 pour la journalisation des accès au serveur](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Pour en savoir plus sur la propriété des objets, consultez [Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment](about-object-ownership.md). Lorsque vous créez de nouveaux compartiments, ACLs ils sont désactivés par défaut.

**Octroi d’accès à l’aide d’une stratégie de compartiment**  
Pour accorder l’accès en utilisant la stratégie de compartiment sur le compartiment de destination, mettez à jour la stratégie de compartiment afin d’accorder l’autorisation `s3:PutObject` au principal du service de journalisation. Si vous utilisez la console Amazon S3 pour activer la journalisation des accès au serveur, la console met automatiquement à jour la stratégie de compartiment sur le compartiment de destination, afin d’accorder cette autorisation au principal du service de journalisation. Si vous activez la journalisation des accès au serveur par programmation, vous devez mettre à jour manuellement la stratégie de compartiment pour le compartiment de destination afin d’accorder l’accès au principal du service de journalisation. 

Pour un exemple de stratégie de compartiment qui accorde l’accès au principal du service de journalisation, consultez [Octroi d’autorisations au principal du service de journalisation à l’aide d’une stratégie de compartiment](#grant-log-delivery-permissions-bucket-policy).

**Octroi d'accès à l'aide d'un bucket ACLs**  
Vous pouvez également utiliser un bucket ACLs pour accorder l'accès à la livraison du journal d'accès. Vous ajoutez une entrée d’accord à la liste ACL du compartiment qui accorde les autorisations `WRITE` et `READ_ACP` sur le groupe de mise à disposition des journaux S3. Cependant, il n' ACLs est pas recommandé d'accorder l'accès au groupe de distribution de journaux S3 à l'aide d'un bucket. Pour de plus amples informations, veuillez consulter [Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment](about-object-ownership.md). Pour plus d'informations sur la migration d'un bucket existant ACLs pour la livraison des journaux d'accès vers une politique de bucket, consultez[Octroi de l’accès au groupe de livraison des journaux S3 pour la journalisation des accès au serveur](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Pour obtenir un exemple de liste ACL qui accorde l’accès au principal du service de journalisation, consultez [Octroi d’autorisations au groupe de livraison des journaux à l’aide d’une liste ACL de compartiment](#grant-log-delivery-permissions-acl).

### Octroi d’autorisations au principal du service de journalisation à l’aide d’une stratégie de compartiment
<a name="grant-log-delivery-permissions-bucket-policy"></a>

Cet exemple de stratégie de compartiment accorde l’autorisation `s3:PutObject` au principal du service de journalisation (`logging.s3.amazonaws.com`). Pour utiliser cette politique de compartiment, remplacez `user input placeholders` par vos propres informations. Dans la politique suivante, `amzn-s3-demo-destination-bucket` il s'agit du compartiment de destination dans lequel les journaux d'accès au serveur seront fournis et `amzn-s3-demo-source-bucket` du compartiment source. `EXAMPLE-LOGGING-PREFIX`est le préfixe de destination facultatif (également appelé *préfixe cible*) que vous souhaitez utiliser pour vos objets de journal. `SOURCE-ACCOUNT-ID`est celui Compte AWS qui possède le compartiment source. 

**Note**  
Si votre stratégie de compartiment contient des instructions `Deny`, veillez à ce qu’elles n’empêchent pas Amazon S3 de livrer les journaux d’accès.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ServerAccessLogsPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/EXAMPLE-LOGGING-PREFIX*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                }
            }
        }
    ]
}
```

------

### Octroi d’autorisations au groupe de livraison des journaux à l’aide d’une liste ACL de compartiment
<a name="grant-log-delivery-permissions-acl"></a>

**Note**  
Pour des raisons de sécurité, Amazon S3 désactive les listes de contrôle d'accès (ACLs) par défaut dans tous les nouveaux compartiments. Pour plus d’informations sur les autorisations ACL dans la console Amazon S3, consultez [Configuration ACLs](managing-acls.md). 

Nous ne recommandons pas cette approche, mais vous pouvez accorder des autorisations au groupe de livraison des journaux en utilisant une liste ACL de compartiment. Toutefois, si le compartiment de destination utilise le paramètre imposé par le propriétaire du compartiment pour la propriété de l'objet, vous ne pouvez pas définir de compartiment ou d'objet ACLs. Vous ne pouvez pas non plus inclure des octrois de destination (également appelés *octrois cibles*) dans votre configuration [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). À la place, vous devez utiliser une stratégie de compartiment pour accorder l’accès au principal du service de journalisation (`logging.s3.amazonaws.com`). Pour plus d’informations, consultez [Autorisations de diffusion de journaux](#grant-log-delivery-permissions-general).

Dans la liste ACL de compartiment, le groupe de livraison des journaux est représenté par l’URL suivante :

```
1. http://acs.amazonaws.com/groups/s3/LogDelivery
```

Pour accorder des autorisations `WRITE` et `READ_ACP` (lecture de liste ACL), ajoutez les octrois suivants à la liste ACL du compartiment de destination :

```
 1. <Grant>
 2.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 3.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
 4.     </Grantee>
 5.     <Permission>WRITE</Permission>
 6. </Grant>
 7. <Grant>
 8.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 9.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
10.     </Grantee>
11.     <Permission>READ_ACP</Permission>
12. </Grant>
```

Pour obtenir des exemples d’ajout d’attributions ACL par programmation, consultez [Configuration ACLs](managing-acls.md).

**Important**  
Lorsque vous activez la journalisation de l'accès au serveur Amazon S3 AWS CloudFormation à l'aide d'un compartiment et que vous l'utilisez ACLs pour accorder l'accès au groupe de mise à disposition des journaux S3, vous devez également ajouter « » `AccessControl": "LogDeliveryWrite"` à votre CloudFormation modèle. Cela est important car vous ne pouvez accorder ces autorisations qu'en créant une ACL pour le bucket, mais vous ne pouvez pas créer de version personnalisée ACLs pour les buckets. CloudFormation Vous ne pouvez utiliser que des conserves ACLs avec CloudFormation.

## Pour activer la journalisation des accès au serveur
<a name="enable-server-logging"></a>

Pour activer la journalisation des accès au serveur à l'aide de la console Amazon S3, de l'API REST Amazon S3 AWS SDKs AWS CLI, et suivez les procédures suivantes.

### Utilisation de la console S3
<a name="server-access-logging"></a>

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Compartiments à usage général**.

1. Dans la liste des compartiments, choisissez le nom du compartiment pour lequel vous souhaitez activer la journalisation des accès au serveur.

1. Choisissez **Propriétés**.

1. Dans la section **Server access logging (Journalisation des accès au serveur)** choisissez **Edit (Modifier)**.

1. Sous **Consignation des accès au serveur**, choisissez **Activer**. 

1. Sous **Compartiment de destination**, spécifiez un compartiment et un préfixe facultatif. Si vous spécifiez un préfixe, nous vous recommandons d’inclure une barre oblique (`/`) après le préfixe pour faciliter la recherche des journaux. 
**Note**  
La spécification d’un préfixe avec une barre oblique (`/`) simplifie la localisation des objets journaux. Par exemple, si vous spécifiez la valeur de préfixe `logs/`, chaque objet journal créé par Amazon S3 commence par le préfixe `logs/` dans sa clé, comme suit :  

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```
Si vous spécifiez la valeur de préfixe `logs`, l’objet journal apparaît comme suit :  

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

1. Sous **Format de clé d’objet journal**, effectuez l’une des opérations suivantes :
   + Pour choisir le non-date-based partitionnement, choisissez **[DestinationPrefix] [YYYY] - [MM] - [DD] - [hh] - [mm] - [ss] - []**. UniqueString
   + **Pour choisir le partitionnement basé sur la date, choisissez **[DestinationPrefix] [SourceAccountId]/[SourceRegion]/[YYYYSourceBucket]/[MM]/[DD]/[YYYY] - [MM] - [DD] - [hh] - [mm] - [ss] - [UniqueString]**, puis choisissez l'heure de l'**événement S3 ou l'heure** de livraison du fichier journal.**

1. Sélectionnez **Enregistrer les modifications**.

   Lorsque vous activez la journalisation des accès au serveur sur un compartiment, la console active la journalisation sur le compartiment source et met à jour la stratégie de compartiment pour le compartiment de destination afin d’accorder l’autorisation `s3:PutObject` au principal du service de journalisation (`logging.s3.amazonaws.com`). Pour plus d’informations sur cette stratégie de compartiment, consultez [Octroi d’autorisations au principal du service de journalisation à l’aide d’une stratégie de compartiment](#grant-log-delivery-permissions-bucket-policy).

   Vous pouvez afficher les journaux dans le compartiment de destination. Une fois que vous avez activé la journalisation des accès au serveur, cela peut prendre quelques heures avant que les journaux sont livrés dans le compartiment cible. Pour plus d’informations sur la façon et le moment de livraison des journaux, consultez [Comment sont distribués les journaux ?](ServerLogs.md#how-logs-delivered).

Pour plus d’informations, consultez [Affichage des propriétés d’un compartiment à usage général S3](view-bucket-properties.md).

### Utilisation de l'API REST
<a name="enable-logging-rest"></a>

Pour activer la journalisation, vous envoyez une demande [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) pour ajouter la configuration de journalisation sur le compartiment source. La demande spécifie le compartiment de destination (également appelé *compartiment cible*) et, si vous le souhaitez, le préfixe à utiliser avec toutes les clés d’objets journaux. 

L’exemple suivant identifie `amzn-s3-demo-destination-bucket` comme compartiment de destination et *`logs/`* comme préfixe. 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2.   <LoggingEnabled>
3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
4.     <TargetPrefix>logs/</TargetPrefix>
5.   </LoggingEnabled>
6. </BucketLoggingStatus>
```

L’exemple suivant identifie `amzn-s3-demo-destination-bucket` comme compartiment de destination, *`logs/`* comme préfixe et `EventTime` comme format de clé d’objet journal. 

```
 1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
 2.   <LoggingEnabled>
 3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
 4.     <TargetPrefix>logs/</TargetPrefix>
 5.     <TargetObjectKeyFormat>
 6.       <PartitionedPrefix>
 7.          <PartitionDateSource>EventTime</PartitionDateSource>
 8.       </PartitionedPrefix>
 9.   </TargetObjectKeyFormat>
10.   </LoggingEnabled>
11. </BucketLoggingStatus>
```

Les objets des journaux sont écrits et détenus par le compte de livraison des journaux S3, et le propriétaire du compartiment possède les autorisations complètes sur ces objets. Vous pouvez éventuellement utiliser des octrois de destination (également appelés *octrois cibles*) pour accorder des autorisations aux autres utilisateurs, afin qu’ils puissent accéder aux journaux. Pour de plus amples informations, veuillez consulter [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html). 

**Note**  
Si le compartiment de destination utilise le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets, vous ne pouvez pas utiliser les octrois de destination pour accorder des autorisations à d’autres utilisateurs. Pour accorder des autorisations à d’autres, vous pouvez mettre à jour la stratégie de compartiment sur le compartiment de destination. Pour plus d’informations, consultez [Autorisations de diffusion de journaux](#grant-log-delivery-permissions-general). 

Pour récupérer la configuration de journalisation sur un compartiment, utilisez l’opération d’API [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html). 

Pour supprimer la configuration de la journalisation, vous envoyez une demande `PutBucketLogging` avec un paramètre `BucketLoggingStatus` vide : 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2. </BucketLoggingStatus>
```

Pour activer la connexion à un compartiment, vous pouvez utiliser l'API Amazon S3 ou les bibliothèques d'encapsulation du AWS SDK.

### En utilisant le AWS SDKs
<a name="enable-logging-sdk"></a>

Les exemples suivants activent la journalisation sur un compartiment. Vous devez créer deux compartiments : un compartiment source et un compartiment de destination (cible). Les exemples commencent par mettre à jour la liste ACL de compartiment sur le compartiment de destination. Ils accordent alors au groupe de livraison des journaux les autorisations nécessaires pour écrire des journaux dans le compartiment de destination, puis activent la journalisation sur le compartiment source. 

Ces exemples ne fonctionnent pas sur les compartiments de destination qui utilisent le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets.

Si le compartiment de destination (cible) utilise le paramètre imposé par le propriétaire du compartiment pour la propriété de l'objet, vous ne pouvez pas définir de compartiment ou d'objet ACLs. Vous ne pouvez pas non plus inclure d'autorisations de destination (cible) dans votre [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)configuration. Vous devez utiliser une politique de compartiment pour accorder l’accès au principal du service de journalisation (`logging.s3.amazonaws.com`). Pour de plus amples informations, veuillez consulter [Autorisations de diffusion de journaux](#grant-log-delivery-permissions-general).

------
#### [ .NET ]

**SDK pour .NET**  
 Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le [référentiel d’exemples de code AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/S3#code-examples). 

```
    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Amazon.S3;
    using Amazon.S3.Model;
    using Microsoft.Extensions.Configuration;

    /// <summary>
    /// This example shows how to enable logging on an Amazon Simple Storage
    /// Service (Amazon S3) bucket. You need to have two Amazon S3 buckets for
    /// this example. The first is the bucket for which you wish to enable
    /// logging, and the second is the location where you want to store the
    /// logs.
    /// </summary>
    public class ServerAccessLogging
    {
        private static IConfiguration _configuration = null!;

        public static async Task Main()
        {
            LoadConfig();

            string bucketName = _configuration["BucketName"];
            string logBucketName = _configuration["LogBucketName"];
            string logObjectKeyPrefix = _configuration["LogObjectKeyPrefix"];
            string accountId = _configuration["AccountId"];

            // If the AWS Region defined for your default user is different
            // from the Region where your Amazon S3 bucket is located,
            // pass the Region name to the Amazon S3 client object's constructor.
            // For example: RegionEndpoint.USWest2 or RegionEndpoint.USEast2.
            IAmazonS3 client = new AmazonS3Client();

            try
            {
                // Update bucket policy for target bucket to allow delivery of logs to it.
                await SetBucketPolicyToAllowLogDelivery(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix,
                    accountId);

                // Enable logging on the source bucket.
                await EnableLoggingAsync(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine($"Error: {e.Message}");
            }
        }

        /// <summary>
        /// This method grants appropriate permissions for logging to the
        /// Amazon S3 bucket where the logs will be stored.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to apply the bucket policy.</param>
        /// <param name="sourceBucketName">The name of the source bucket.</param>
        /// <param name="logBucketName">The name of the bucket where logging
        /// information will be stored.</param>
        /// <param name="logPrefix">The logging prefix where the logs should be delivered.</param>
        /// <param name="accountId">The account id of the account where the source bucket exists.</param>
        /// <returns>Async task.</returns>
        public static async Task SetBucketPolicyToAllowLogDelivery(
            IAmazonS3 client,
            string sourceBucketName,
            string logBucketName,
            string logPrefix,
            string accountId)
        {
            var resourceArn = @"""arn:aws:s3:::" + logBucketName + "/" + logPrefix + @"*""";

            var newPolicy = @"{
                                ""Statement"":[{
                                ""Sid"": ""S3ServerAccessLogsPolicy"",
                                ""Effect"": ""Allow"",
                                ""Principal"": { ""Service"": ""logging.s3.amazonaws.com"" },
                                ""Action"": [""s3:PutObject""],
                                ""Resource"": [" + resourceArn + @"],
                                ""Condition"": {
                                ""ArnLike"": { ""aws:SourceArn"": ""arn:aws:s3:::" + sourceBucketName + @""" },
                                ""StringEquals"": { ""aws:SourceAccount"": """ + accountId + @""" }
                                        }
                                    }]
                                }";
            Console.WriteLine($"The policy to apply to bucket {logBucketName} to enable logging:");
            Console.WriteLine(newPolicy);

            PutBucketPolicyRequest putRequest = new PutBucketPolicyRequest
            {
                BucketName = logBucketName,
                Policy = newPolicy,
            };
            await client.PutBucketPolicyAsync(putRequest);
            Console.WriteLine("Policy applied.");
        }

        /// <summary>
        /// This method enables logging for an Amazon S3 bucket. Logs will be stored
        /// in the bucket you selected for logging. Selected prefix
        /// will be prepended to each log object.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to configure and apply logging to the selected Amazon S3 bucket.</param>
        /// <param name="bucketName">The name of the Amazon S3 bucket for which you
        /// wish to enable logging.</param>
        /// <param name="logBucketName">The name of the Amazon S3 bucket where logging
        /// information will be stored.</param>
        /// <param name="logObjectKeyPrefix">The prefix to prepend to each
        /// object key.</param>
        /// <returns>Async task.</returns>
        public static async Task EnableLoggingAsync(
            IAmazonS3 client,
            string bucketName,
            string logBucketName,
            string logObjectKeyPrefix)
        {
            Console.WriteLine($"Enabling logging for bucket {bucketName}.");
            var loggingConfig = new S3BucketLoggingConfig
            {
                TargetBucketName = logBucketName,
                TargetPrefix = logObjectKeyPrefix,
            };

            var putBucketLoggingRequest = new PutBucketLoggingRequest
            {
                BucketName = bucketName,
                LoggingConfig = loggingConfig,
            };
            await client.PutBucketLoggingAsync(putBucketLoggingRequest);
            Console.WriteLine($"Logging enabled.");
        }

        /// <summary>
        /// Loads configuration from settings files.
        /// </summary>
        public static void LoadConfig()
        {
            _configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("settings.json") // Load settings from .json file.
                .AddJsonFile("settings.local.json", true) // Optionally, load local settings.
                .Build();
        }
    }
```
+  Pour plus de détails sur l'API, reportez-vous [PutBucketLogging](https://docs.aws.amazon.com/goto/DotNetSDKV3/s3-2006-03-01/PutBucketLogging)à la section *Référence des AWS SDK pour .NET API*. 

------
#### [ Java ]

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketLoggingStatus;
import software.amazon.awssdk.services.s3.model.LoggingEnabled;
import software.amazon.awssdk.services.s3.model.PartitionedPrefix;
import software.amazon.awssdk.services.s3.model.PutBucketLoggingRequest;
import software.amazon.awssdk.services.s3.model.TargetObjectKeyFormat;

// Class to set a bucket policy on a target S3 bucket and enable server access logging on a source S3 bucket.
public class ServerAccessLogging {
    private static S3Client s3Client;

    public static void main(String[] args) {
        String sourceBucketName = "SOURCE-BUCKET";
        String targetBucketName = "TARGET-BUCKET";
        String sourceAccountId = "123456789012";
        String targetPrefix = "logs/";

        // Create S3 Client.
        s3Client = S3Client.builder().
                region(Region.US_EAST_2)
                .build();

        // Set a bucket policy on the target S3 bucket to enable server access logging by granting the
        // logging.s3.amazonaws.com principal permission to use the PutObject operation.
        ServerAccessLogging serverAccessLogging = new ServerAccessLogging();
        serverAccessLogging.setTargetBucketPolicy(sourceAccountId, sourceBucketName, targetBucketName);

        // Enable server access logging on the source S3 bucket.
        serverAccessLogging.enableServerAccessLogging(sourceBucketName, targetBucketName,
                targetPrefix);

    }

    // Function to set a bucket policy on the target S3 bucket to enable server access logging by granting the
    // logging.s3.amazonaws.com principal permission to use the PutObject operation.
    public void setTargetBucketPolicy(String sourceAccountId, String sourceBucketName, String targetBucketName) {
        String policy = "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Sid\": \"S3ServerAccessLogsPolicy\",\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"Service\": \"logging.s3.amazonaws.com\"},\n" +
                "            \"Action\": [\n" +
                "                \"s3:PutObject\"\n" +
                "            ],\n" +
                "            \"Resource\": \"arn:aws:s3:::" + targetBucketName + "/*\",\n" +
                "            \"Condition\": {\n" +
                "                \"ArnLike\": {\n" +
                "                    \"aws:SourceArn\": \"arn:aws:s3:::" + sourceBucketName + "\"\n" +
                "                },\n" +
                "                \"StringEquals\": {\n" +
                "                    \"aws:SourceAccount\": \"" + sourceAccountId + "\"\n" +
                "                }\n" +
                "            }\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        s3Client.putBucketPolicy(b -> b.bucket(targetBucketName).policy(policy));
    }

    // Function to enable server access logging on the source S3 bucket.
    public void enableServerAccessLogging(String sourceBucketName, String targetBucketName,
            String targetPrefix) {
        TargetObjectKeyFormat targetObjectKeyFormat = TargetObjectKeyFormat.builder()
                .partitionedPrefix(PartitionedPrefix.builder().partitionDateSource("EventTime").build())
                .build();
        LoggingEnabled loggingEnabled = LoggingEnabled.builder()
                .targetBucket(targetBucketName)
                .targetPrefix(targetPrefix)
                .targetObjectKeyFormat(targetObjectKeyFormat)
                .build();
        BucketLoggingStatus bucketLoggingStatus = BucketLoggingStatus.builder()
                .loggingEnabled(loggingEnabled)
                .build();
        s3Client.putBucketLogging(PutBucketLoggingRequest.builder()
                .bucket(sourceBucketName)
                .bucketLoggingStatus(bucketLoggingStatus)
                .build());
    }

}
```

------

### À l'aide du AWS CLI
<a name="enabling-s3-access-logs-for-requests"></a>

Nous vous recommandons de créer un compartiment de journalisation dédié dans chaque compartiment dans Région AWS lequel vous avez des compartiments S3. Ensuite, faites en sorte que les journaux d’accès Amazon S3 soient livrés dans ce compartiment S3. Pour plus d’informations et des exemples, consultez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html) dans la *référence AWS CLI *.

Si le compartiment de destination (cible) utilise le paramètre imposé par le propriétaire du compartiment pour la propriété de l'objet, vous ne pouvez pas définir de compartiment ou d'objet ACLs. Vous ne pouvez pas non plus inclure d'autorisations de destination (cible) dans votre [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)configuration. Vous devez utiliser une politique de compartiment pour accorder l’accès au principal du service de journalisation (`logging.s3.amazonaws.com`). Pour plus d’informations, consultez [Autorisations de diffusion de journaux](#grant-log-delivery-permissions-general).

**Example – Activer des journaux d’accès avec cinq compartiments répartis dans deux Régions**  
Dans cet exemple, vous disposez des cinq compartiments suivants :   
+ `amzn-s3-demo-source-bucket-us-east-1`
+ `amzn-s3-demo-source-bucket1-us-east-1`
+ `amzn-s3-demo-source-bucket2-us-east-1`
+ `amzn-s3-demo-bucket1-us-west-2`
+ `amzn-s3-demo-bucket2-us-west-2`
**Note**  
La dernière étape de la procédure suivante fournit des exemples de scripts bash que vous pouvez utiliser pour créer vos compartiments de journalisation et activer la journalisation des accès au serveur sur ces compartiments. Pour utiliser ces scripts, vous devez créer les fichiers `policy.json` et `logging.json`, comme décrit dans la procédure suivante.

1. Créez deux compartiments de destination de journalisation dans les régions USA Ouest (Oregon) et USA Est (Virginie du Nord) et donnez-leur les noms suivants :
   + `amzn-s3-demo-destination-bucket-logs-us-east-1`
   + `amzn-s3-demo-destination-bucket1-logs-us-west-2`

1. Plus tard dans ces étapes, vous activerez la journalisation des accès au serveur comme suit :
   + `amzn-s3-demo-source-bucket-us-east-1` consigne dans le compartiment S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` avec le préfixe `amzn-s3-demo-source-bucket-us-east-1`.
   + `amzn-s3-demo-source-bucket1-us-east-1` consigne dans le compartiment S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` avec le préfixe `amzn-s3-demo-source-bucket1-us-east-1`.
   + `amzn-s3-demo-source-bucket2-us-east-1` consigne dans le compartiment S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` avec le préfixe `amzn-s3-demo-source-bucket2-us-east-1`.
   + `amzn-s3-demo-bucket1-us-west-2` consigne dans le compartiment S3 `amzn-s3-demo-destination-bucket1-logs-us-west-2` avec le préfixe `amzn-s3-demo-bucket1-us-west-2`.
   + `amzn-s3-demo-bucket2-us-west-2` consigne dans le compartiment S3 `amzn-s3-demo-destination-bucket1-logs-us-west-2` avec le préfixe `amzn-s3-demo-bucket2-us-west-2`.

1. Pour chaque compartiment de journalisation de destination, accordez des autorisations pour la livraison des journaux d’accès au serveur à l’aide d’une liste ACL de compartiment *ou* d’une stratégie de compartiment :
   + **Mettre à jour la stratégie de compartiment** (recommandé) : pour accorder des autorisations au principal du service de journalisation, utilisez la commande `put-bucket-policy` suivante. Remplacez `amzn-s3-demo-destination-bucket-logs` par le nom de votre compartiment de destination.

     ```
     1. aws s3api put-bucket-policy --bucket amzn-s3-demo-destination-bucket-logs --policy file://policy.json
     ```

     `Policy.json` est un document JSON dans le dossier actuel qui contient la stratégie de compartiment suivante. Pour utiliser cette politique de compartiment, remplacez `user input placeholders` par vos propres informations. Dans la politique suivante, *`amzn-s3-demo-destination-bucket-logs`* est le compartiment de destination où les journaux des accès au serveur seront livrés, et `amzn-s3-demo-source-bucket` est le compartiment source. `SOURCE-ACCOUNT-ID` est le Compte AWS qui possède le compartiment source.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "S3ServerAccessLogsPolicy",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": "logging.s3.amazonaws.com"
                 },
                 "Action": [
                     "s3:PutObject"
                 ],
                 "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket-logs/*",
                 "Condition": {
                     "ArnLike": {
                         "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                     },
                     "StringEquals": {
                         "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                     }
                 }
             }
         ]
     }
     ```

------
   + **Mettre à jour la liste ACL de compartiment** : pour accorder des autorisations au groupe de livraison des journaux S3, utilisez la commande `put-bucket-acl` suivante. Remplacez *`amzn-s3-demo-destination-bucket-logs`* par le nom de votre compartiment de destination (cible).

     ```
     1. aws s3api put-bucket-acl --bucket amzn-s3-demo-destination-bucket-logs  --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery 
     ```

1. Créez ensuite un fichier `logging.json` contenant votre configuration de journalisation (en vous basant sur l’un des trois exemples suivants). Après avoir créé le fichier `logging.json`, vous pouvez appliquer la configuration de journalisation à l’aide de la commande `put-bucket-logging` suivante. Remplacez *`amzn-s3-demo-destination-bucket-logs`* par le nom de votre compartiment de destination (cible).

   ```
   1. aws s3api put-bucket-logging --bucket amzn-s3-demo-destination-bucket-logs --bucket-logging-status file://logging.json 
   ```
**Note**  
Au lieu d’utiliser cette commande `put-bucket-logging` pour appliquer la configuration de journalisation sur chaque compartiment de destination, vous pouvez utiliser l’un des scripts bash fournis à l’étape suivante. Pour utiliser ces scripts, vous devez créer les fichiers `policy.json` et `logging.json`, comme décrit dans cette procédure.

   Le fichier `logging.json` est un document JSON situé dans le dossier actuel, qui contient votre configuration de journalisation. Si un compartiment de destination utilise le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets, votre configuration de journalisation ne peut pas contenir d’octrois de destination (cibles). Pour plus d’informations, consultez [Autorisations de diffusion de journaux](#grant-log-delivery-permissions-general).  
**Example : `logging.json` sans octrois de destination (cibles)**  

   L’exemple de fichier `logging.json` suivant ne contient pas d’octrois de destination (cibles). Par conséquent, vous pouvez appliquer cette configuration à un compartiment de destination (cible) qui utilise le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets.

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/"
          }
      }
   ```  
**Example : `logging.json` avec des octrois de destination (cibles)**  

   L’exemple de fichier `logging.json` suivant contient des octrois de destination (cibles).

   Si le compartiment de destination utilise le paramètre Appliqué par le propriétaire du compartiment pour Propriété d’objets, vous ne pouvez pas inclure d’octrois de destination (cibles) dans votre configuration [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html). Pour de plus amples informations, veuillez consulter [Autorisations de diffusion de journaux](#grant-log-delivery-permissions-general).

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/",
             "TargetGrants": [
                  {
                     "Grantee": {
                         "Type": "CanonicalUser",
                         "ID": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
                      },
                     "Permission": "FULL_CONTROL"
                  }
              ]
          }
      }
   ```

**Valeurs des bénéficiaires**  
Vous pouvez spécifier la personne (bénéficiaire) à laquelle vous attribuez les droits d’accès (en utilisant les éléments de la demande) comme suit :
   + Par l’ID de la personne :

     ```
     {
       "Grantee": {
         "Type": "CanonicalUser",
         "ID": "ID"
       }
     }
     ```
   + Par l’URI :

     ```
     {
       "Grantee": {
         "Type": "Group",
         "URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
       }
     }
     ```  
**Example : `logging.json` avec le format de clé d’objet journal défini sur Heure de l’événement S3**  

   Le fichier `logging.json` suivant remplace le format de clé d’objet journal par l’heure de l’événement S3. Pour plus d’informations sur la définition du format de clé d’objet journal, consultez [Comment activer la livraison des journaux ?](ServerLogs.md#server-access-logging-overview).

   ```
     { 
       "LoggingEnabled": {
           "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
           "TargetPrefix": "amzn-s3-demo-destination-bucket/",
           "TargetObjectKeyFormat": { 
               "PartitionedPrefix": { 
                   "PartitionDateSource": "EventTime" 
               }
            }
       }
   }
   ```

1. Utilisez l’un des scripts bash suivants pour ajouter la journalisation des accès pour tous les compartiments dans votre compte. Remplacez *`amzn-s3-demo-destination-bucket-logs`* par le nom de votre compartiment de destination (cible) et remplacez `us-west-2` par le nom de la région où se trouvent vos compartiments.
**Note**  
Ce script fonctionne uniquement si tous vos compartiments se trouvent dans la même région. Si vous disposez de compartiments dans plusieurs Régions, vous devez adapter le script.   
**Example — Accordez l’accès avec des stratégies de compartiment et ajoutez la journalisation pour les compartiments de votre compte**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```  
**Example — Accordez l'accès avec un bucket ACLs et ajoutez une journalisation pour les buckets de votre compte**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```

## Vérification de votre configuration des journaux d’accès au serveur
<a name="verify-access-logs"></a>

Après avoir activé la journalisation des accès au serveur, effectuez les étapes suivantes : 
+ Accédez au compartiment de destination et vérifiez que les fichiers journaux sont livrés. Une fois les journaux d’accès configurés, Amazon S3 commence immédiatement à capturer les demandes et à les journaliser. Toutefois, la livraison des journaux dans le compartiment de destination peut prendre quelques heures. Pour plus d’informations, consultez [Les changements de statut de la journalisation des compartiments prennent effet au fil du temps](ServerLogs.md#BucketLoggingStatusChanges) et [Livraison des journaux du serveur dans la mesure du possible](ServerLogs.md#LogDeliveryBestEffort).

  Vous pouvez également vérifier automatiquement la livraison des journaux en utilisant les métriques de demande Amazon S3 et en configurant des CloudWatch alarmes Amazon pour ces métriques. Pour de plus amples informations, veuillez consulter [Surveillance des métriques avec Amazon CloudWatch](cloudwatch-monitoring.md).
+ Vérifiez que vous êtes en mesure d’ouvrir et de lire le contenu des fichiers journaux.

Pour obtenir des informations sur la résolution des problèmes de journalisation des accès au serveur, consultez [Résolution des problèmes de journalisation des accès au serveur](troubleshooting-server-access-logging.md).

# Format des journaux d’accès au serveur Amazon S3
<a name="LogFormat"></a>

La journalisation des accès au serveur fournit des enregistrements détaillés des demandes soumises à un compartiment Amazon S3. Vous pouvez utiliser les journaux d’accès au serveur dans les buts suivants : 
+ Réalisation d’audits de sécurité et d’accès
+ Apprendre à connaître votre clientèle
+ Comprendre votre facture Amazon S3

Cette section décrit le format et d’autres détails des fichiers journaux d’accès au serveur Amazon S3.

Les fichiers journaux d’accès au serveur consistent en une séquence d’enregistrements de journaux délimités par un retour à la ligne. Chaque enregistrement de journaux représente une demande et consiste en des champs séparés par des espaces.

Voici un exemple de journal composé de cinq enregistrements.

**Note**  
Tous les champs peuvent être configurés sur `-` pour indiquer que les données étaient inconnues ou indisponibles, ou que le champ ne s’appliquait pas à cette demande. 

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
```

Voici un exemple de fichier journal pour l’opération **Calculer la somme de contrôle** :

```
7cd47ef2be amzn-s3-demo-bucket [06/Feb/2019:00:00:38 +0000] - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be e5042925-b524-4b3b-a869-f3881e78ff3a S3.COMPUTE.OBJECT.CHECKSUM example-object - - - - 1048576 - - - - - bPf7qjG4XwYdPgDQTl72GW/uotRhdPz2UryEyAFLDSRmKrakUkJCYLtAw6fdANcrsUYc1M/kIulXM1u5vZQT5g== - - - - - - - -
```

**Topics**
+ [Champs d’enregistrement des journaux](#log-record-fields)
+ [Journalisation supplémentaire les opérations de copie](#AdditionalLoggingforCopyOperations)
+ [Informations personnalisées des journaux d’accès](#LogFormatCustom)
+ [Remarques de programmation relatives au format étendu des journaux d’accès au serveur](#LogFormatExtensible)

## Champs d’enregistrement des journaux
<a name="log-record-fields"></a>

La liste suivante décrit les champs de l’enregistrement des journaux.

**Propriétaire du compartiment**  
L’ID d’utilisateur canonique du propriétaire du compartiment source. L'ID utilisateur canonique est une autre forme de l' Compte AWS ID. Pour plus d’informations sur l’ID d’utilisateur canonique, consultez [Identificateurs de Compte AWS](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) dans *Références générales AWS*. Pour savoir comment trouver l’ID d’utilisateur canonique de votre compte, consultez [Identification de l’ID d’utilisateur canonique de votre Compte AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId).  
**Exemple d’entrée**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Compartiment**  
Le nom du compartiment sur lequel la demande a été traitée. Si le système reçoit une demande erronée et ne peut pas déterminer le compartiment, la demande n’apparaît sur aucun journal d’accès au serveur.  
**Exemple d’entrée**  

```
amzn-s3-demo-bucket1
```

**Heure**  
Heure à laquelle la demande a été reçue. Ces dates et heures sont exprimées en heure UTC (temps universel coordonné). Le format, en utilisant terminologie `strftime()`, est le suivant : `[%d/%b/%Y:%H:%M:%S %z]`  
**Exemple d’entrée**  

```
[06/Feb/2019:00:00:38 +0000]
```

**Adresse IP distante**  
L’adresse IP apparente du demandeur. Les proxys et pare-feu intermédiaires doivent cacher l’adresse IP réelle de la machine à l’origine de la demande.  
**Exemple d’entrée**  

```
192.0.2.3
```

**Demandeur**  
ID d’utilisateur canonique du demandeur, ou `-` pour les demandes non authentifiées. Si le demandeur était un utilisateur IAM, ce champ renvoie le nom d'utilisateur IAM du demandeur ainsi Compte AWS que le nom auquel appartient l'utilisateur IAM. Cet identifiant est le même que celui qui est utilisé pour contrôler l’accès.  
**Exemple d’entrée**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Si le demandeur utilise un rôle endossé, ce champ renvoie le rôle IAM correspondant.  
**Exemple d’entrée**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**ID de demande**  
Chaîne de caractères générée par Amazon S3 pour identifier de façon unique chaque demande. Pour les demandes **Calculer la somme de contrôle**, le champ **ID de la demande** affiche l’ID de tâche associé. Pour de plus amples informations, veuillez consulter [Calcul des sommes de contrôle](batch-ops-compute-checksums.md).  
**Exemple d’entrée**  

```
3E57427F33A59F07
```

**Opération**  
L’opération listée ici est déclarée comme `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type` ou `BATCH.DELETE.OBJECT`, ou `S3.action.resource_type` pour [Cycle de vie S3 et journalisation](lifecycle-and-other-bucket-config.md#lifecycle-general-considerations-logging). Pour les demandes de tâches [https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html), l’opération est répertoriée sous la forme `S3.COMPUTE.OBJECT.CHECKSUM`.  
**Exemple d’entrée**  

```
REST.PUT.OBJECT
S3.COMPUTE.OBJECT.CHECKSUM
```

**Clé**  
La partie clé (nom de l’objet) de la demande.  
**Exemple d’entrée**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
La partie `Request-URI` du message de requête HTTP. Ce champ peut inclure des guillemets non échappés provenant de la saisie de l'utilisateur.  
**Exemple d’entrée**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
```

**Statut HTTP**  
Code numérique du statut HTTP de la réponse.  
**Exemple d’entrée**  

```
200
```

**Code d’erreur**  
[Réponses d’erreur](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) Amazon S3 ou `-` si aucune erreur ne s’est produite.  
**Exemple d’entrée**  

```
NoSuchBucket
```

**Octets envoyés**  
Nombre d’octets de réponse envoyés, hors surcharge de protocole HTTP ou `-` si zéro.  
**Exemple d’entrée**  

```
2662992
```

**Taille de l’objet**  
Taille totale de l’objet en question.  
**Exemple d’entrée**  

```
3462992
```

**Durée totale**  
Le nombre de millisecondes (ms) pendant lesquelles la demande était en cours du point de vue du serveur. Cette valeur est mesurée entre la réception de la demande et l’envoi du dernier octet de la réponse. Les mesures effectuées depuis la perspective du client peuvent être plus longues en raison de la latence du réseau.  
**Exemple d’entrée**  

```
70
```

**Délai de traitement**  
Le nombre de millisecondes pendant lesquelles Amazon S3 a traité la demande. Cette valeur est mesurée entre la réception du dernier octets de votre demande et l’envoi du premier octet de la réponse.  
**Exemple d’entrée**  

```
10
```

**Referer**  
Valeur de l’en-tête du `Referer` HTTP, le cas échéant. Les agents utilisateur HTTP (par exemple, les navigateurs) définissent généralement cet en-tête comme l’URL de la page de liaison ou d’intégration lors d’une demande. Ce champ peut inclure des guillemets non échappés provenant de la saisie de l'utilisateur.  
**Exemple d’entrée**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
Valeur de l’en-tête du `User-Agent` HTTP. Ce champ peut inclure des guillemets non échappés provenant de la saisie de l'utilisateur.  
**Exemple d’entrée**  

```
"curl/7.15.1"
```

**ID de version**  
L’ID de version dans la demande ou `-` si l’opération n’accepte pas de paramètre `versionId`.  
**Exemple d’entrée**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**ID de l’hôte**  
L’ID de la requête étendue `x-amz-id-2` ou Amazon S3.   
**Exemple d’entrée**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Version de signature**  
Version de signature, `SigV2` ou `SigV4`, qui a été utilisée pour authentifier la demande ou `-` pour les demandes non authentifiées.  
**Exemple d’entrée**  

```
SigV2
```

**Suite de chiffrement**  
Chiffrement de protocole TLS (Transport Layer Security) qui a été négocié pour une demande HTTPS ou un `-` pour HTTP.  
**Exemple d’entrée**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Type d’authentification**  
Type d’authentification de requête utilisé : `AuthHeader` pour les en-têtes d’authentification, `QueryString` pour la chaîne de requête (URL présignée), ou `-` pour les demandes non authentifiées.  
**Exemple d’entrée**  

```
AuthHeader
```

**En-tête d’hôte**  
Point de terminaison utilisé pour vous connecter à Amazon S3.  
**Exemple d’entrée**  

```
s3.us-west-2.amazonaws.com
```
Certaines régions antérieures prennent en charge les points de terminaison hérités. Vous pouvez voir ces points de terminaison dans les journaux ou AWS CloudTrail journaux d'accès de votre serveur. Pour de plus amples informations, veuillez consulter [Points de terminaison hérités](VirtualHosting.md#s3-legacy-endpoints). Pour obtenir la liste complète des régions et points de terminaison Amazon S3, consultez [Points de terminaison et quotas Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) dans le *Référence générale d'Amazon Web Services*.

**Version de TLS**  
Version de protocole TLS (Transport Layer Security) négociée par le client. La valeur est l’une des valeurs suivantes : `TLSv1.1`, `TLSv1.2`, `TLSv1.3` ou `-` si le protocole TLS n’a pas été utilisé.  
**Exemple d’entrée**  

```
TLSv1.2
```

**ARN de point d’accès**  
Amazon Resource Name (ARN) du point d’accès de la demande. Si l’ARN du point d’accès est mal formé ou n’est pas utilisé, le champ contient un `-`. Pour plus d’informations sur les points d’accès, consultez [Utilisation des points d’accès Amazon S3 de compartiments à usage général](using-access-points.md). Pour plus d'informations ARNs, consultez [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) dans le *guide de AWS référence*.  
**Exemple d’entrée**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
Une chaîne qui indique si la requête a nécessité une liste de contrôle d’accès (ACL) pour l’autorisation. Si la requête a nécessité un ACL pour l’autorisation, la chaîne est `Yes`. Si vous ACLs n'en avez pas besoin, la chaîne est`-`. Pour plus d'informations sur ACLs, voir[Présentation de la liste de contrôle d’accès (ACL)](acl-overview.md). Pour plus d'informations sur l'utilisation du `aclRequired` champ pour désactiver ACLs, consultez[Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment](about-object-ownership.md).   
**Exemple d’entrée**  

```
Yes
```

**Région source**  
 AWS Région d'où provient la demande. Ce champ affiche un tiret (`-`) lorsque la région d'origine ne peut pas être déterminée (comme les PrivateLink connexions, les connexions Direct Connect, les adresses Bring your own IP (BYOIP) ou les adresses non IP) ou lorsque le journal est généré par des opérations déclenchées sur la base de politiques ou d'actions définies par le client, telles que le cycle de vie et la somme de contrôle.AWS   
**Exemple d’entrée**  

```
us-east-1
```

## Journalisation supplémentaire les opérations de copie
<a name="AdditionalLoggingforCopyOperations"></a>

Une copie implique une demande `GET` et une demande `PUT`. C’est pourquoi, nous consignons deux enregistrements lors d’une opération de copie. La section précédente décrit les champs liés à la partie `PUT` de l’opération. La liste suivante décrit les champs dans l’enregistrement qui ont trait à la partie `GET` de l’opération de copie.

**Propriétaire du compartiment**  
L’ID d’utilisateur canonique du compartiment qui stocke l’objet en cours de copie. L'ID utilisateur canonique est une autre forme de l' Compte AWS ID. Pour plus d’informations sur l’ID d’utilisateur canonique, consultez [Identificateurs de Compte AWS](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) dans *Références générales AWS*. Pour savoir comment trouver l’ID d’utilisateur canonique de votre compte, consultez [Identification de l’ID d’utilisateur canonique de votre Compte AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId).  
**Exemple d’entrée**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Compartiment**  
Nom du compartiment qui stocke l’objet à copier.  
**Exemple d’entrée**  

```
amzn-s3-demo-bucket1
```

**Heure**  
Heure à laquelle la demande a été reçue. Ces dates et heures sont exprimées en heure UTC (temps universel coordonné). Le format, en utilisant terminologie `strftime()`, est le suivant : `[%d/%B/%Y:%H:%M:%S %z]`  
**Exemple d’entrée**  

```
[06/Feb/2019:00:00:38 +0000]
```

**Adresse IP distante**  
L’adresse IP apparente du demandeur. Les proxys et pare-feu intermédiaires doivent cacher l’adresse IP réelle de la machine à l’origine de la demande.  
**Exemple d’entrée**  

```
192.0.2.3
```

**Demandeur**  
ID d’utilisateur canonique du demandeur, ou `-` pour les demandes non authentifiées. Si le demandeur était un utilisateur IAM, ce champ renverra le nom d'utilisateur IAM du demandeur ainsi Utilisateur racine d'un compte AWS que le nom auquel appartient l'utilisateur IAM. Cet identifiant est le même que celui qui est utilisé pour contrôler l’accès.  
**Exemple d’entrée**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Si le demandeur utilise un rôle endossé, ce champ renvoie le rôle IAM correspondant.  
**Exemple d’entrée**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**ID de demande**  
Chaîne de caractères générée par Amazon S3 pour identifier de façon unique chaque demande. Pour les demandes **Calculer la somme de contrôle**, le champ **ID de la demande** affiche l’ID de tâche associé. Pour de plus amples informations, veuillez consulter [Calcul des sommes de contrôle](batch-ops-compute-checksums.md).  
**Exemple d’entrée**  

```
3E57427F33A59F07
```

**Opération**  
L’opération listée ici est déclarée comme `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type` ou `BATCH.DELETE.OBJECT`.  
**Exemple d’entrée**  

```
REST.COPY.OBJECT_GET
```

**Clé**  
La clé (nom de l’objet) de l’objet à copier, ou `-` si l’opération n’accepte pas de paramètre clé.   
**Exemple d’entrée**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
La partie `Request-URI` du message de requête HTTP. Ce champ peut inclure des guillemets non échappés provenant de la saisie de l'utilisateur.  
**Exemple d’entrée**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar"
```

**Statut HTTP**  
Code numérique du statut HTTP de la partie `GET` de l’opération de copie.  
**Exemple d’entrée**  

```
200
```

**Code d’erreur**  
[Réponses d’erreur](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) Amazon S3 de la partie `GET` de l’opération de copie ou `-` si aucune erreur ne s’est produite.  
**Exemple d’entrée**  

```
NoSuchBucket
```

**Octets envoyés**  
Nombre d’octets de réponse envoyés, hors surcharge de protocole HTTP ou `-` si zéro.  
**Exemple d’entrée**  

```
2662992
```

**Taille de l’objet**  
Taille totale de l’objet en question.  
**Exemple d’entrée**  

```
3462992
```

**Durée totale**  
Le nombre de millisecondes (ms) pendant lesquelles la demande était en cours du point de vue du serveur. Cette valeur est mesurée entre la réception de la demande et l’envoi du dernier octet de la réponse. Les mesures effectuées depuis la perspective du client peuvent être plus longues en raison de la latence du réseau.  
**Exemple d’entrée**  

```
70
```

**Délai de traitement**  
Le nombre de millisecondes pendant lesquelles Amazon S3 a traité la demande. Cette valeur est mesurée entre la réception du dernier octets de votre demande et l’envoi du premier octet de la réponse.  
**Exemple d’entrée**  

```
10
```

**Referer**  
Valeur de l’en-tête du `Referer` HTTP, le cas échéant. Les agents utilisateur HTTP (par exemple, les navigateurs) définissent généralement cet en-tête comme l’URL de la page de liaison ou d’intégration lors d’une demande. Ce champ peut inclure des guillemets non échappés provenant de la saisie de l'utilisateur.  
**Exemple d’entrée**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
Valeur de l’en-tête du `User-Agent` HTTP. Ce champ peut inclure des guillemets non échappés provenant de la saisie de l'utilisateur.  
**Exemple d’entrée**  

```
"curl/7.15.1"
```

**ID de version**  
ID de version de l’objet à copier ou `-` si l’en-tête `x-amz-copy-source` n’a pas spécifié de paramètre `versionId` dans la source de copie.  
**Exemple d’entrée**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**ID de l’hôte**  
L’ID de la requête étendue `x-amz-id-2` ou Amazon S3.  
**Exemple d’entrée**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Version de signature**  
Version de signature, `SigV2` ou `SigV4`, qui a été utilisée pour authentifier la demande ou `-` pour les demandes non authentifiées.  
**Exemple d’entrée**  

```
SigV4
```

**Suite de chiffrement**  
Chiffrement de protocole TLS (Transport Layer Security) qui a été négocié pour une demande HTTPS ou un `-` pour HTTP.  
**Exemple d’entrée**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Type d’authentification**  
Type d'authentification de demande utilisé : `AuthHeader` pour les en-têtes d'authentification, `QueryString` pour les chaînes de requête (présignées URLs) ou `-` pour les demandes non authentifiées.  
**Exemple d’entrée**  

```
AuthHeader
```

**En-tête d’hôte**  
Point de terminaison utilisé pour vous connecter à Amazon S3.  
**Exemple d’entrée**  

```
s3.us-west-2.amazonaws.com
```
Certaines régions antérieures prennent en charge les points de terminaison hérités. Vous pouvez voir ces points de terminaison dans les journaux ou AWS CloudTrail journaux d'accès de votre serveur. Pour de plus amples informations, veuillez consulter [Points de terminaison hérités](VirtualHosting.md#s3-legacy-endpoints). Pour obtenir la liste complète des régions et points de terminaison Amazon S3, consultez [Points de terminaison et quotas Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) dans le *Référence générale d'Amazon Web Services*.

**Version de TLS**  
Version de protocole TLS (Transport Layer Security) négociée par le client. La valeur est l’une des valeurs suivantes : `TLSv1.1`, `TLSv1.2`, `TLSv1.3` ou `-` si le protocole TLS n’a pas été utilisé.  
**Exemple d’entrée**  

```
TLSv1.2
```

**ARN de point d’accès**  
Amazon Resource Name (ARN) du point d’accès de la demande. Si l’ARN du point d’accès est mal formé ou n’est pas utilisé, le champ contient un `-`. Pour plus d’informations sur les points d’accès, consultez [Utilisation des points d’accès Amazon S3 de compartiments à usage général](using-access-points.md). Pour plus d'informations ARNs, consultez [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) dans le *guide de AWS référence*.  
**Exemple d’entrée**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
Une chaîne qui indique si la requête a nécessité une liste de contrôle d'accès (ACL) pour l'autorisation. Si la requête a nécessité un ACL pour l’autorisation, la chaîne est `Yes`. Si vous ACLs n'en avez pas besoin, la chaîne est`-`. Pour plus d'informations sur ACLs, voir[Présentation de la liste de contrôle d’accès (ACL)](acl-overview.md). Pour plus d'informations sur l'utilisation du `aclRequired` champ pour désactiver ACLs, consultez[Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment](about-object-ownership.md).   
**Exemple d’entrée**  

```
Yes
```

**Région source**  
 AWS Région d'où provient la demande. Ce champ affiche un tiret (`-`) lorsque la région d'origine ne peut pas être déterminée (comme les PrivateLink connexions, les connexions Direct Connect, les adresses Bring your own IP (BYOIP) ou les adresses non IP) ou lorsque le journal est généré par des opérations déclenchées sur la base de politiques ou d'actions définies par le client, telles que le cycle de vie et la somme de contrôle.AWS   
**Exemple d’entrée**  

```
us-east-1
```

## Informations personnalisées des journaux d’accès
<a name="LogFormatCustom"></a>

Vous pouvez inclure des informations personnalisées à stocker dans le journal d’accès pour une demande. Pour ce faire, ajoutez un paramètre de chaîne de requête personnalisé à l’URL utilisée. Amazon S3 ignore les paramètres de la chaîne de requête qui commencent par `x-`, mais inclut ces derniers dans les enregistrements des journaux d’accès pour la demande dans le champ `Request-URI`. 

Par exemple, une demande `GET` pour `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-user=johndoe"` fonctionne de la même manière que la demande pour `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg"`, sauf que la chaîne `"x-user=johndoe"` est incluse dans le champ `Request-URI` de l’enregistrement de journal associé. Cette fonctionnalité est uniquement disponible dans l’interface REST.

## Remarques de programmation relatives au format étendu des journaux d’accès au serveur
<a name="LogFormatExtensible"></a>

Parfois, nous pouvons étendre le format d’enregistrement du journal d’accès en ajoutant de nouveaux champs à la fin de chaque ligne. Par conséquent, assurez-vous que tout votre code qui analyse les journaux d’accès au serveur peut gérer les champs de suivi qu’il pourrait ne pas comprendre. 

# Suppression des fichiers journaux Amazon S3
<a name="deleting-log-files-lifecycle"></a>

Un compartiment Amazon S3 dont la journalisation des accès au serveur est activée peut accumuler un grand nombre de journaux au fil du temps. L’application peut avoir besoin de ces journaux d’accès pendant une période donnée après leur création, après quoi vous pourrez les supprimer. Vous pouvez utiliser la configuration de cycle de vie Amazon S3 pour définir des règles afin qu’Amazon S3 mette automatiquement ces objets en file d’attente de suppression à la fin de leur vie. 

Vous pouvez définir une configuration de cycle de vie pour un sous-ensemble d’objets dans votre compartiment S3 à l’aide d’un préfixe partagé. Si vous spécifiez un préfixe dans la configuration de la journalisation des accès au serveur, vous pouvez configurer une règle de configuration du cycle de vie pour supprimer les objets du journal qui ont ce préfixe. 

Par exemple, supposons que vos objets journaux aient le préfixe `logs/`. Vous pouvez définir une règle de configuration de cycle de vie pour supprimer tous les objets du compartiment dotés du préfixe `logs/` après une période de temps spécifiée. 

Pour en savoir plus sur la configuration du cycle de vie, consultez [Gestion du cycle de vie des objets](object-lifecycle-mgmt.md).

Pour plus d’informations sur la journalisation des accès au serveur, consultez [Enregistrement de demandes avec journalisation des accès au serveur](ServerLogs.md).

# Utilisation des journaux d’accès au serveur Amazon S3 pour identifier des demandes
<a name="using-s3-access-logs-to-identify-requests"></a>

Vous pouvez identifier des demandes Amazon S3 à l’aide des journaux d’accès au serveur Amazon S3. 

**Note**  
Pour identifier les demandes Amazon S3, nous vous recommandons d'utiliser AWS CloudTrail des événements de données plutôt que des journaux d'accès au serveur Amazon S3. CloudTrail les événements de données sont plus faciles à configurer et contiennent davantage d'informations. Pour de plus amples informations, veuillez consulter [Identification des demandes Amazon S3 à l'aide CloudTrail](cloudtrail-request-identification.md).
Selon le nombre de demandes d'accès que vous recevez, l'analyse de vos journaux peut nécessiter plus de ressources ou de temps que l'utilisation d'événements de CloudTrail données.

**Topics**
+ [Interrogation des journaux d’accès pour les demandes à l’aide d’Amazon Athena](#querying-s3-access-logs-for-requests)
+ [Identification des demandes Signature Version 2 à l’aide des journaux d’accès Amazon S3](#using-s3-access-logs-to-identify-sigv2-requests)
+ [Identification des demandes d’accès aux objets à l’aide des journaux d’accès Amazon S3](#using-s3-access-logs-to-identify-objects-access)

## Interrogation des journaux d’accès pour les demandes à l’aide d’Amazon Athena
<a name="querying-s3-access-logs-for-requests"></a>

Vous pouvez identifier les demandes Amazon S3 à l’aide des journaux d’accès Amazon S3 en utilisant Amazon Athena. 

Amazon S3 stocke les journaux d’accès au serveur en tant qu’objets dans un compartiment S3. Il est souvent plus facile d’utiliser un outil capable d’analyser les journaux dans Amazon S3. Athena prend en charge l’analyse des objets S3 et ne peut pas être utilisé pour interroger les journaux d’accès Amazon S3.

**Example**  
L’exemple suivant montre comment vous pouvez interroger les journaux d’accès au serveur Amazon S3 dans Amazon Athena. Remplacez les `user input placeholders` utilisés dans les exemples suivants par vos propres informations.  
Pour spécifier un emplacement Amazon S3 dans une requête Athena, vous devez fournir un URI S3 pour le compartiment où vos journaux sont livrés. Cet URI doit inclure le nom et le préfixe du compartiment au format suivant : `s3://amzn-s3-demo-bucket1-logs/prefix/` 

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l’Éditeur de requête, exécutez une commande similaire à ce qui suit. Remplacez `s3_access_logs_db` par le nom que vous souhaitez donner à votre base de données. 

   ```
   CREATE DATABASE s3_access_logs_db
   ```
**Note**  
Il est recommandé de créer la base de données au même endroit Région AWS que votre compartiment S3. 

1. Dans l’Éditeur de requête, exécutez une commande semblable à ce qui suit pour créer un schéma de table dans la base de données que vous avez créée à l’étape 2. Remplacez `s3_access_logs_db.mybucket_logs` par le nom que vous souhaitez donner à votre table. Les valeurs de type de données `STRING` et `BIGINT` sont les propriétés des journaux d’accès. Vous pouvez interroger ces propriétés dans Athena. Pour `LOCATION`, saisissez le compartiment S3 et le préfixe du chemin comme notés précédemment.

------
#### [ Date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE s3_access_logs_db.mybucket_logs( 
    `bucketowner` STRING, 
    `bucket_name` STRING, 
    `requestdatetime` STRING, 
    `remoteip` STRING, 
    `requester` STRING, 
    `requestid` STRING, 
    `operation` STRING, 
    `key` STRING, 
    `request_uri` STRING, 
    `httpstatus` STRING, 
    `errorcode` STRING, 
    `bytessent` BIGINT, 
    `objectsize` BIGINT, 
    `totaltime` STRING, 
    `turnaroundtime` STRING, 
    `referrer` STRING, 
    `useragent` STRING, 
    `versionid` STRING, 
    `hostid` STRING, 
    `sigv` STRING, 
    `ciphersuite` STRING, 
    `authtype` STRING, 
    `endpoint` STRING, 
    `tlsversion` STRING,
    `accesspointarn` STRING,
    `aclrequired` STRING,
    `sourceregion` STRING)
    PARTITIONED BY (
      `timestamp` string)
   ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
    'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
    's3://bucket-name/prefix-name/account-id/region/source-bucket-name/'
    TBLPROPERTIES (
     'projection.enabled'='true', 
     'projection.timestamp.format'='yyyy/MM/dd', 
     'projection.timestamp.interval'='1', 
     'projection.timestamp.interval.unit'='DAYS', 
     'projection.timestamp.range'='2024/01/01,NOW', 
     'projection.timestamp.type'='date', 
     'storage.location.template'='s3://bucket-name/prefix-name/account-id/region/source-bucket-name/${timestamp}')
   ```

------
#### [ Non-date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`(
     `bucketowner` STRING, 
     `bucket_name` STRING, 
     `requestdatetime` STRING, 
     `remoteip` STRING, 
     `requester` STRING, 
     `requestid` STRING, 
     `operation` STRING, 
     `key` STRING, 
     `request_uri` STRING, 
     `httpstatus` STRING, 
     `errorcode` STRING, 
     `bytessent` BIGINT, 
     `objectsize` BIGINT, 
     `totaltime` STRING, 
     `turnaroundtime` STRING, 
     `referrer` STRING, 
     `useragent` STRING, 
     `versionid` STRING, 
     `hostid` STRING, 
     `sigv` STRING, 
     `ciphersuite` STRING, 
     `authtype` STRING, 
     `endpoint` STRING, 
     `tlsversion` STRING,
     `accesspointarn` STRING,
     `aclrequired` STRING,
     `sourceregion` STRING)
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
     'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket1-logs/prefix/'
   ```

------

1. Dans le volet de navigation, sous **Database (Base de données)**, choisissez votre base de données.

1. Sous **Tables**, choisissez **Aperçu de la table** en regard du nom de votre table.

   Dans le volet **Results (Résultats)**, vous devriez voir apparaître les données des journaux d’accès au serveur, par exemple `bucketowner`, `bucket`, `requestdatetime`, etc. Ceci signifie que vous avez correctement créé la table Athena. Vous pouvez désormais interroger les journaux d’accès au serveur Amazon S3.

**Example – Afficher qui a supprimé un objet et quand (horodatage, adresse IP et utilisateur IAM)**  

```
SELECT requestdatetime, remoteip, requester, key 
FROM s3_access_logs_db.mybucket_logs 
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
```

**Example – Afficher toutes les opérations effectuées par un utilisateur IAM**  

```
SELECT * 
FROM s3_access_logs_db.mybucket_logs 
WHERE requester='arn:aws:iam::123456789123:user/user_name';
```

**Example – Afficher toutes les opérations effectuées sur un objet au cours d’une période spécifique**  

```
SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE Key='prefix/images/picture.jpg' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
```

**Example  : afficher la quantité de données transférées vers une adresse IP donnée au cours d’une période**  

```
SELECT coalesce(SUM(bytessent), 0) AS bytessenttotal
FROM s3_access_logs_db.mybucket_logs
WHERE remoteip='192.0.2.1'
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-06-01','yyyy-MM-dd')
AND parse_datetime('2022-07-01','yyyy-MM-dd');
```

**Example — Trouve IDs les requêtes contenant des erreurs HTTP 5xx sur une période donnée**  

```
SELECT requestdatetime, key, httpstatus, errorcode, requestid, hostid 
FROM s3_access_logs_db.mybucket_logs
WHERE httpstatus like '5%' AND timestamp
BETWEEN '2024/01/29'
AND '2024/01/30'
```

**Note**  
Pour réduire le temps de conservation de vos journaux, vous pouvez créer une configuration de cycle de vie S3 pour votre compartiment de journaux d’accès au serveur. Créez des règles de configuration de cycle de vie pour supprimer régulièrement les fichiers journaux. Cela permet de réduire la quantité de données analysées par Athena pour chaque requête. Pour plus d’informations, consultez [Définition d’une configuration du cycle de vie S3 sur un compartiment](how-to-set-lifecycle-configuration-intro.md).

## Identification des demandes Signature Version 2 à l’aide des journaux d’accès Amazon S3
<a name="using-s3-access-logs-to-identify-sigv2-requests"></a>

La prise en charge d’Amazon S3 pour Signature Version 2 sera désactivée (obsolète). Après cela, Amazon S3 n’acceptera plus les demandes utilisant Signature Version 2, et toutes les demandes devront utiliser le processus de signature *Signature Version 4*. Vous pouvez identifier les demandes d’accès avec Signature Version 2 en utilisant les journaux d’accès Amazon S3. 

**Note**  
Pour identifier les demandes Signature version 2, nous vous recommandons d'utiliser AWS CloudTrail des événements de données plutôt que des journaux d'accès au serveur Amazon S3. CloudTrail les événements de données sont plus faciles à configurer et contiennent plus d'informations que les journaux d'accès au serveur. Pour de plus amples informations, veuillez consulter [Identification des demandes Amazon S3 Signature version 2 à l'aide de CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-sigv2-requests).

**Example – Afficher tous les demandeurs qui envoient du trafic Signature Version 2**  

```
SELECT requester, sigv, Count(sigv) as sigcount 
FROM s3_access_logs_db.mybucket_logs
GROUP BY requester, sigv;
```

## Identification des demandes d’accès aux objets à l’aide des journaux d’accès Amazon S3
<a name="using-s3-access-logs-to-identify-objects-access"></a>

Vous pouvez utiliser des requêtes sur les journaux d’accès au serveur Amazon S3 pour identifier les demandes d’accès aux objets Amazon S3, pour des opérations telles que `GET`, `PUT` et `DELETE`, et découvrir plus d’informations sur ces demandes.

L’exemple de requête Amazon Athena suivant montre comment obtenir toutes les demandes d’objet `PUT` pour Amazon S3 à partir d’un journal d’accès au serveur. 

**Example — afficher tous les demandeurs qui envoient des demandes d’objets `PUT` au cours d’une période donnée**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.PUT.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42',yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

L’exemple de requête Amazon Athena suivant montre comment obtenir toutes les demandes d’objet `GET` pour Amazon S3 à partir du journal d’accès au serveur. 

**Example — afficher tous les demandeurs qui envoient des demandes d'objets `GET` au cours d'une période donnée**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.GET.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

L’exemple de requête Amazon Athena suivant montre comment obtenir toutes les demandes anonymes vers vos compartiments S3 à partir du journal d’accès du serveur. 

**Example — afficher tous les demandeurs anonymes qui adressent des demandes à un compartiment au cours d’une période donnée**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE requester IS NULL 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

La requête Amazon Athena suivante montre comment identifier toutes les requêtes adressées à vos compartiments S3 qui ont nécessité une liste de contrôle d’accès (ACL) pour l’autorisation. Vous pouvez utiliser ces informations pour migrer ces autorisations ACL vers les politiques de compartiment appropriées et les désactiver ACLs. Après avoir créé ces politiques de compartiment, vous pouvez les désactiver ACLs pour ces compartiments. Pour plus d'informations sur la désactivation ACLs, consultez[Conditions préalables à la désactivation ACLs](object-ownership-migrating-acls-prerequisites.md). 

**Example — identifiez toutes les demandes qui ont nécessité un ACL pour l'autorisation.**  

```
SELECT bucket_name, requester, key, operation, aclrequired, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE aclrequired = 'Yes' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-05-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2022-08-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
```

**Note**  
Vous pouvez modifier la plage de dates en fonction de vos besoins.
Ces exemples de requêtes peuvent aussi s’avérer utiles pour surveiller la sécurité. Vous pouvez vérifier les résultats pour les appels `PutObject` ou `GetObject` depuis des adresses IP ou des demandeurs inattendus ou non autorisés et pour identifier les demandes anonymes adressées à vos compartiments.
Cette requête ne récupère d’informations qu’à partir du moment où l’enregistrement a été activé. 
Si vous utilisez AWS CloudTrail des journaux, consultez[Identification de l'accès aux objets S3 en utilisant CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-object-access). 

# Résolution des problèmes de journalisation des accès au serveur
<a name="troubleshooting-server-access-logging"></a>

Les rubriques suivantes peuvent vous aider à résoudre les problèmes que vous êtes susceptible de rencontrer lors de la configuration de la journalisation avec Amazon S3.

**Topics**
+ [Messages d’erreur courants lors de la configuration de la journalisation](#common-errors)
+ [Dépannage des échecs de livraison](#delivery-failures)

## Messages d’erreur courants lors de la configuration de la journalisation
<a name="common-errors"></a>

Les messages d'erreur courants suivants peuvent apparaître lorsque vous activez la journalisation via AWS Command Line Interface (AWS CLI) et AWS SDKs : 

Erreur : la journalisation entre localisations S3 n’est pas autorisée

Si le compartiment de destination (également appelé *compartiment cible*) se trouve dans une région différente de celle du compartiment source, une erreur La journalisation entre localisations S3 n’est pas autorisée se produit. Pour résoudre cette erreur, assurez-vous que le compartiment de destination configuré pour recevoir les journaux d'accès se trouve dans le même Région AWS compartiment Compte AWS que le compartiment source.

Erreur : le propriétaire du compartiment à journaliser et celui du compartiment cible doivent être identiques

Lorsque vous activez la journalisation des accès au serveur, cette erreur se produit si le compartiment de destination spécifié appartient à un compte différent. Pour résoudre cette erreur, assurez-vous que le compartiment de destination se trouve dans le même compartiment Compte AWS que le compartiment source.

**Note**  
Nous vous recommandons de choisir un compartiment de destination différent du compartiment source. Lorsque le compartiment source et le compartiment de destination sont identiques, des journaux supplémentaires sont créés pour les journaux qui sont écrits dans le compartiment, ce qui peut augmenter votre facture de stockage. Ces journaux supplémentaires peuvent également rendre difficile de trouver des journaux spécifiques. Pour simplifier la gestion des journaux, nous vous recommandons d’enregistrer les journaux d’accès dans un autre compartiment. Pour plus d’informations, consultez [Comment activer la livraison des journaux ?](ServerLogs.md#server-access-logging-overview).

Erreur : le compartiment cible pour la journalisation n’existe pas

Le compartiment de destination doit exister avant de définir la configuration. Cette erreur indique que le compartiment de destination n’existe pas ou est introuvable. Assurez-vous que le nom du compartiment est correctement orthographié, puis réessayez.

Erreur : les accords cibles ne sont pas autorisés pour les compartiments appliqués par le propriétaire du compartiment

Cette erreur indique que le compartiment de destination utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3. Le paramètre Propriétaire du compartiment appliqué ne prend pas en charge les octrois de destination (cibles). Pour plus d’informations, consultez [Autorisations de diffusion de journaux](enable-server-access-logging.md#grant-log-delivery-permissions-general).

## Dépannage des échecs de livraison
<a name="delivery-failures"></a>

Pour éviter les problèmes de journalisation des accès au serveur, veillez à suivre les bonnes pratiques suivantes :
+ **Le groupe de livraison des journaux S3 dispose d’un accès en écriture au compartiment de destination** : le groupe de livraison des journaux S3 fournit des journaux d’accès au serveur vers le compartiment de destination. Une stratégie de compartiment ou une liste de contrôle d’accès (ACL) peuvent être utilisées pour accorder l’accès en écriture au compartiment de destination. Toutefois, nous vous recommandons d’utiliser une stratégie de compartiment plutôt qu’une liste ACL. Pour plus d’informations sur la manière d’accorder l’accès en écriture à votre compartiment de destination, consultez [Autorisations de diffusion de journaux](enable-server-access-logging.md#grant-log-delivery-permissions-general).
**Note**  
Si le compartiment de destination utilise le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets, tenez compte de ce qui suit :   
ACLs sont désactivés et n'affectent plus les autorisations. Vous ne pouvez pas mettre à jour la liste ACL de votre compartiment pour accorder l’accès au groupe de livraison des journaux S3. À la place, pour accorder l’accès au principal du service de journalisation, vous devez mettre à jour la stratégie de compartiment pour le compartiment de destination. 
Vous ne pouvez pas inclure d’octrois de destination dans votre configuration `PutBucketLogging`. 
+ **La stratégie de compartiment du compartiment de destination permet d’accéder aux journaux** : vérifiez la stratégie de compartiment du compartiment de destination. Recherchez dans la politique du compartiment toutes les déclarations contenant `"Effect": "Deny"`. Vérifiez ensuite que la déclaration `Deny` n’empêche pas l’écriture des journaux d’accès dans le compartiment.
+ **Le verrouillage d’objet S3 n’est pas activé sur le compartiment de destination** : vérifiez si le verrouillage d’objet est activé dans le compartiment de destination. Le verrouillage des objets bloque la livraison des journaux d’accès au serveur. Vous devez choisir un compartiment de destination sur lequel le verrouillage d’objet n’est pas activé.
+ **Les clés gérées par Amazon S3 (SSE-S3) sont sélectionnées si le chiffrement par défaut est activé sur le compartiment de destination** : vous pouvez utiliser le chiffrement de compartiment par défaut sur le compartiment de destination uniquement si vous utilisez le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3). Le chiffrement côté serveur par défaut avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) n'est pas pris en charge pour les compartiments de destination de journalisation des accès au serveur. Pour plus d’informations sur l’activation du chiffrement par défaut, consultez [Configuration du chiffrement par défaut](default-bucket-encryption.md).
+ **Le paiement par le demandeur n’est pas activé dans le compartiment de destination** : le paiement par le demandeur n’est pas pris en charge dans le compartiment de destination pour la journalisation des accès au serveur. Pour autoriser la livraison des journaux d’accès au serveur, désactivez l’option Paiement par le demandeur sur le compartiment de destination.
+ Passez en **revue vos politiques de contrôle des AWS Organizations services (SCPs) et vos politiques de contrôle des ressources (RCPs)** : lorsque vous utilisez AWS Organizations, vérifiez les politiques de contrôle des services et les politiques de contrôle des ressources pour vous assurer que l'accès à Amazon S3 est autorisé. Ces politiques spécifient les autorisations maximales pour les principaux et les ressources des comptes concernés. Recherchez dans les politiques toutes les instructions qui contiennent `"Effect": "Deny"` et vérifiez que les instructions `Deny` n’empêchent pas l’écriture des journaux d’accès dans le compartiment. Pour plus d’informations, consultez [Politiques d’autorisation dans AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html) dans le *Guide de l’utilisateur AWS Organizations *.
+ **Prévoyez un certain temps pour que les modifications récentes de la configuration de la journalisation prennent effet** : l’activation de la journalisation des accès au serveur pour la première fois ou la modification du compartiment de destination pour les journaux nécessite du temps pour entrer pleinement en vigueur. Plus d’une heure peut être nécessaire pour que toutes les demandes soient correctement journalisées et livrées. 

  Pour vérifier les échecs de livraison des journaux, activez les métriques de demande sur Amazon CloudWatch. Si les journaux ne sont pas livrés au bout de quelques heures, recherchez la métrique `4xxErrors`, qui peut indiquer des échecs de livraison des journaux. Pour plus d’informations sur l’activation des métriques de demande, consultez [Création d'une configuration de CloudWatch métriques pour tous les objets de votre compartiment](configure-request-metrics-bucket.md).