

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.

# Activation des journaux d'accès pour votre Application Load Balancer
<a name="enable-access-logging"></a>

Pour activer les journaux d'accès pour votre équilibreur de charge, vous devez spécifier le nom du compartiment S3 dans lequel l'équilibreur de charge stockera les journaux. Le compartiment doit avoir une politique de compartiment qui accorde à Elastic Load Balancing l'autorisation d'écrire dans le compartiment.

**Topics**
+ [Étape 1 : créer un compartiment S3](#access-log-create-bucket)
+ [Étape 2 : Attacher une politique à votre compartiment S3](#attach-bucket-policy)
+ [Étape 3 : configurer des journaux d'accès](#enable-access-logs)
+ [Étape 4 : vérifier les autorisations du compartiment](#verify-bucket-permissions)
+ [Résolution des problèmes](#bucket-permissions-troubleshooting)

## Étape 1 : créer un compartiment S3
<a name="access-log-create-bucket"></a>

Lorsque vous activez les journaux d'accès, vous devez spécifier un compartiment S3 pour les journaux d'accès. Vous ou utiliser un compartiment existant ou créer un compartiment spécifique pour les journaux d'accès. Le compartiment doit répondre aux critères suivants :

**Exigences**
+ Le compartiment doit se situer dans la même région que l'équilibreur de charge. Le compartiment et l'équilibreur de charge peuvent être détenus par des comptes différents.
+ La seule option de chiffrement côté serveur prise en charge est Amazon S3-managed clés (SSE-S3). Pour plus d'informations, voir [Amazon S3-managed clés de chiffrement (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html).

**Pour créer un compartiment S3 vide à l'aide de la console Amazon S3**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Sur la page **Créer un compartiment**, procédez de la façon suivante :

   1. Pour **Nom du compartiment**, saisissez le nom de votre compartiment. Ce nom doit être unique parmi tous les noms de compartiment existants dans Amazon S3. Dans certaines régions, des restrictions supplémentaires peuvent être appliquées aux noms de compartiment. Pour plus d'informations, voir [Restrictions et limites relatives aux compartiments](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) dans le *Guide de l'utilisateur d'Amazon S3*.

   1. Pour **AWS Region** (Région ), sélectionnez la région où vous avez créé votre équilibreur de charge.

   1. Pour **Chiffrement par défaut**, choisissez **Amazon S3-managed clés (SSE-S3)**.

   1. Choisissez **Créer un compartiment**.

## Étape 2 : Attacher une politique à votre compartiment S3
<a name="attach-bucket-policy"></a>

Votre compartiment S3 doit avoir une politique de compartiment qui accorde à Elastic Load Balancing l'autorisation d'écrire les journaux d'accès dans le compartiment. Les stratégies de compartiment sont une collection d'instructions JSON écrites dans le langage d'access policy permettant de définir des autorisations d'accès pour votre compartiment. Chaque instruction comporte des informations relatives à une seule autorisation et contient une série d'éléments.

Si vous utilisez un compartiment existant qui comporte déjà une politique attachée, vous pouvez ajouter la déclaration pour le journaux d'accès Elastic Load Balancing à la politique. Si vous procédez ainsi, nous vous recommandons d'évaluer l'ensemble d'autorisations résultant pour vous s'assurer que celles-ci sont appropriées pour les utilisateurs qui ont besoin d'accéder au compartiment pour trouver des journaux d'accès.

### Politique de compartiment
<a name="bucket-policy-logdelivery"></a>

Cette politique accorde des autorisations au service de livraison de journaux.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/{{prefix}}/AWSLogs/{{123456789012}}/*"
    }
  ]
}
```

Pour `Resource`, entrez l'ARN de l'emplacement des journaux d'accès, en utilisant le format indiqué dans l'exemple de politique. Incluez toujours l'ID du compte associé à l'équilibreur de charge dans le chemin des ressources de l'ARN du compartiment S3. Cela garantit que seuls les équilibreurs de charge du compte spécifié peuvent écrire des journaux d'accès dans le compartiment S3.

L'ARN que vous spécifiez varie selon que vous prévoyez d'inclure ou non un préfixe lorsque vous activez les connexions d'accès. [étape 3](#enable-access-logs).

**Exemple d'ARN de compartiment S3 avec un préfixe**  
Le nom du compartiment S3 est amzn-s3-demo-logging-bucket et le préfixe est logging-prefix.

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**AWS GovCloud (US)** — L'exemple suivant utilise la syntaxe ARN pour AWS GovCloud (US) Regions.

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**Exemple d'ARN de compartiment S3 sans préfixe**  
Le nom du compartiment S3 est amzn-s3-demo-logging-bucket. Il n'y a aucune partie de préfixe dans l'ARN du compartiment S3.

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

**AWS GovCloud (US)** — L'exemple suivant utilise la syntaxe ARN pour AWS GovCloud (US) Regions.

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

### Ancienne politique en matière de compartiments
<a name="legacy-bucket-policy"></a>

Auparavant, pour les régions disponibles avant août 2022, nous avions besoin d'une politique qui accordait des autorisations à un compte Elastic Load Balancing spécifique à la région. Cette ancienne politique est toujours prise en charge, mais nous vous recommandons de la remplacer par la nouvelle politique ci-dessus. Si vous préférez continuer à utiliser l'ancienne politique, qui n'est pas illustrée ici, c'est possible.

 À titre de référence, voici les ID des comptes Elastic Load Balancing à spécifier dans `Principal` dans la politique d'héritage. Notez que les régions qui ne figurent pas dans cette liste ne soutiennent pas l'ancienne politique.
+ USA Est (Virginie du Nord) : 127311923021
+ USA Est (Ohio) : 033677994240
+ USA Ouest (Californie du Nord) : 027434742980
+ USA Ouest (Oregon) : 797873946194
+ Afrique (Le Cap) : 098369216593
+ Asie-Pacifique (Hong Kong) : 754344448648
+ Asie-Pacifique (DJakarta) – 589379963580
+ Asie-Pacifique (Mumbai) : 718504428378
+ Asie-Pacifique (Osaka) : 383597477331
+ Asie-Pacifique (Séoul) : 600734575887
+ Asie-Pacifique (Singapour) : 114774131450
+ Asie-Pacifique (Sydney) : 783225319266
+ Asie-Pacifique (Tokyo) : 582318560864
+ Canada (Centre) : 985666609251
+ Europe (Francfort) : 054676820928
+ Europe (Irlande) : 156460612806
+ Europe (Londres) : 652711504416
+ Europe (Milan) : 635631232127
+ Europe (Paris) : 009996457667
+ Europe (Stockholm) : 897822967062
+ Moyen-Orient (Bahreïn) : 076674570225
+ Amérique du Sud (São Paulo) : 507241528517
+ AWS GovCloud (US-East) — 190560391635
+ AWS GovCloud (US-West) — 048591011584

### Zones Outposts
<a name="bucket-policy-outposts"></a>

La politique suivante accorde des autorisations au service de livraison de journaux spécifié. Utilisez cette stratégie pour les équilibreurs de charge dans Outposts.

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "logdelivery.elb.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/{{prefix}}/AWSLogs/{{123456789012}}/*",
    "Condition": {
        "StringEquals": {
            "s3:x-amz-acl": "bucket-owner-full-control"
        }
    }
}
```

Pour `Resource`, entrez l'ARN de l'emplacement des journaux d'accès, en utilisant le format indiqué dans l'exemple de politique. Incluez toujours l'ID du compte associé à l'équilibreur de charge dans le chemin des ressources de l'ARN du compartiment S3. Cela garantit que seuls les équilibreurs de charge du compte spécifié peuvent écrire des journaux d'accès dans le compartiment S3.

L'ARN du compartiment S3 que vous spécifiez varie selon que vous prévoyez d'inclure un préfixe lorsque vous activez les connexions d'accès dans [étape 3](#enable-access-logs).

**Exemple d'ARN de compartiment S3 avec un préfixe**  
Le nom du compartiment S3 est amzn-s3-demo-logging-bucket et le préfixe est logging-prefix.

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**Exemple d'ARN de compartiment S3 sans préfixe**  
Le nom du compartiment S3 est amzn-s3-demo-logging-bucket. Il n'y a aucune partie de préfixe dans l'ARN du compartiment S3.

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

### Bonnes pratiques de sécurité
<a name="bucket-policy-security-best-practices"></a>
+ Utilisez le chemin complet des ressources, y compris la partie ID de compte de l'ARN du compartiment S3. N'utilisez pas de caractères génériques (\*) dans la partie ID de compte de l'ARN du compartiment S3.

  ```
  "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/{{prefix}}/AWSLogs/{{123456789012}}/*"
  ```
+ Utiliser `aws:SourceArn` pour vous assurer que seuls les équilibreurs de charge de la région et du compte spécifiés peuvent utiliser votre compartiment.

  ```
  "Condition": {
      "ArnLike": {
          "aws:SourceArn": "arn:aws:elasticloadbalancing:{{region}}:{{123456789012}}:loadbalancer/*"
      }
  }
  ```
+ Utiliser `aws:SourceOrgId` avec `aws:SourceArn` pour vous assurer que seuls les équilibreurs de charge de l'organisation spécifiée peuvent utiliser votre compartiment.

  ```
  "Condition": {
      "StringEquals": {
          "aws:SourceOrgId": "{{o-1234567890}}"
      },
      "ArnLike": {
          "aws:SourceArn": "arn:aws:elasticloadbalancing:*:*:loadbalancer/*"
      }
  }
  ```
+ Si vous avez `Deny` déclaration pour empêcher l'accès aux principaux de service à l'exception de ceux explicitement autorisés, veillez à ajouter `logdelivery.elasticloadbalancing.amazonaws.com` à la liste des directeurs de service autorisés. Par exemple, si vous avez utilisé `aws:PrincipalServiceNamesList` état, ajouter `logdelivery.elasticloadbalancing.amazonaws.com` comme suit :

  ```
  {
    "Effect": "Deny",
    "Principal": "*",
    "Condition": {
        "StringNotEqualsIfExists": {
            "aws:PrincipalServiceNamesList": [
                "logdelivery.elasticloadbalancing.amazonaws.com",
                "{{service}}.amazonaws.com"
            ]
        }
    }
  }
  ```

  Si vous avez utilisé `NotPrincipal` élément, ajouter `logdelivery.elasticloadbalancing.amazonaws.com` comme suit. Notez que nous vous recommandons d'utiliser `aws:PrincipalServiceName` ou `aws:PrincipalServiceNamesList` clé de condition pour autoriser explicitement les principaux de service au lieu d'utiliser le `NotPrincipal` élément. Pour plus d’informations, consultez [NotPrincipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notprincipal.html).

  ```
  {
    "Effect": "Deny",
    "NotPrincipal": {
      "Service": [
         "logdelivery.elasticloadbalancing.amazonaws.com",
         "{{service}}.amazonaws.com"
      ]
    }
  },
  ```

Après avoir créé votre politique de compartiment, utilisez une interface Amazon S3, telle que la console Amazon S3 ou AWS CLI commandes, pour associer votre politique de compartiment à votre compartiment S3.

------
#### [ Console ]

**Pour associer votre politique de compartiment à votre compartiment S3**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Sélectionnez le nom du compartiment pour ouvrir sa page de détails.

1. Choisissez **Permissions** (Autorisations), **Bucket policy** (Politique de compartiment), puis **Edit** (Modifier).

1. Mettez à jour la politique de compartiment pour accorder les autorisations requises.

1. Cliquez sur **Enregistrer les modifications**.

------
#### [ AWS CLI ]

**Pour associer votre politique de compartiment à votre compartiment S3**  
Utilisez le [politique du put-bucket](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html) commande. Dans cet exemple, la politique de compartiment a été enregistrée dans le fichier .json spécifié.

```
aws s3api put-bucket-policy \
    --bucket {{amzn-s3-demo-bucket}} \
    --policy file://{{access-log-policy.json}}
```

------

## Étape 3 : configurer des journaux d'accès
<a name="enable-access-logs"></a>

Utilisez la procédure suivante pour configurer les journaux d'accès afin de capturer les informations relatives aux demandes et de transmettre les fichiers journaux à votre compartiment S3.

**Exigences**  
Le compartiment doit répondre aux exigences décrites à l'[étape 1](#access-log-create-bucket) et vous devez y associer une politique de compartiment comme décrit à l'[étape 2](#attach-bucket-policy). Si vous incluez un préfixe, il ne doit pas inclure la chaîne « AWSLogs ».

**Pour gérer le compartiment S3 pour vos journaux d'accès**  
Assurez-vous de désactiver les journaux d'accès avant de supprimer le compartiment que vous avez configuré pour ces derniers. Sinon, s'il existe un nouveau compartiment avec le même nom et la politique de compartiment requise, mais créé dans un Compte AWS que vous ne possédez pas, Elastic Load Balancing risque d'écrire les journaux d'accès pour votre équilibreur de charge dans ce nouveau compartiment.

------
#### [ Console ]

**Pour activer les journaux d’accès**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers**.

1. Sélectionnez le nom de votre équilibreur de charge afin d'ouvrir sa page de détails.

1. Dans l'onglet **Attributes**, choisissez **Edit**.

1. Pour **Surveillance**, activez **Journaux d'accès**.

1. Pour **S3 URI**, saisissez l'URI S3 de vos fichiers journaux. L'URI que vous spécifiez varie selon que vous utilisez ou non un préfixe.
   + URI avec un préfixe : s3 ://{{amzn-s3-demo-logging-bucket}}/{{logging-prefix}}
   + URI sans préfixe : s3 ://{{amzn-s3-demo-logging-bucket}}

1. Cliquez sur **Enregistrer les modifications**.

------
#### [ AWS CLI ]

**Pour activer les journaux d’accès**  
Utilisez le [modifier les attributs de l'équilibreur de charge](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) commande avec les attributs associés.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn {{load-balancer-arn}} \
    --attributes \
        Key=access_logs.s3.enabled,Value=true \
        Key=access_logs.s3.bucket,Value={{amzn-s3-demo-logging-bucket}} \
        Key=access_logs.s3.prefix,Value={{logging-prefix}}
```

------
#### [ CloudFormation ]

**Pour activer les journaux d’accès**  
Mettez à jour le [AWS::ElasticLoadBalancingVERSION 2 :LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) ressource pour inclure les attributs associés.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "access_logs.s3.enabled"
          Value: "true"
        - Key: "access_logs.s3.bucket"
          Value: "{{amzn-s3-demo-logging-bucket}}"
        - Key: "access_logs.s3.prefix"
          Value: "{{logging-prefix}}"
```

------

## Étape 4 : vérifier les autorisations du compartiment
<a name="verify-bucket-permissions"></a>

Une fois que les journaux d'accès sont activés pour votre équilibreur de charge, Elastic Load Balancing valide le compartiment S3 et crée un fichier de test pour s'assurer que la politique de compartiment spécifie les autorisations requises. Vous pouvez utiliser la console Amazon S3 pour vérifier que le fichier test a été créé. Le fichier test n'est pas un fichier journal d'accès réel ; il ne contient pas de modèles d'enregistrement.

**Pour vérifier qu'un fichier de test a été créé dans votre compartiment à l'aide de la console Amazon S3**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Sélectionnez le nom du compartiment que vous avez spécifié pour les journaux d'accès.

1. Accédez au fichier test, `ELBAccessLogTestFile`. L'emplacement varie selon que vous utilisez ou non un préfixe.
   + Lieu avec un préfixe : {{amzn-s3-demo-logging-bucket}}/{{logging-prefix}}/Journaux AWS/{{123456789012}}/ELBAccessLogTestFile
   + Lieu sans préfixe : {{amzn-s3-demo-logging-bucket}}/Journaux AWS/{{123456789012}}/ELBAccessLogTestFile

## Résolution des problèmes
<a name="bucket-permissions-troubleshooting"></a>

Si vous recevez une erreur de refus d'accès, les causes possibles sont les suivantes :
+ La politique de compartiment n’accorde pas à Elastic Load Balancing l'autorisation d'écrire des journaux d’accès dans le compartiment. Vérifiez que vous utilisez la bonne politique en matière de compartiments pour la région. Vérifiez que l'ARN de la ressource utilise le même nom de compartiment que celui que vous avez spécifié lorsque vous avez activé les journaux d'accès. Vérifiez que l'ARN de la ressource n'inclut pas de préfixe si vous n'en avez pas spécifié lorsque vous avez activé les journaux d'accès.
+ Le compartiment utilise une option de chiffrement côté serveur non prise en charge. Le bucket doit utiliser Amazon S3-managed clés (SSE-S3).