

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.

# Invalidation du contenu par des balises de cache
<a name="invalidation-by-tags"></a>

Amazon CloudFront prend en charge les invalidations de balises, ce qui vous permet d'invalider des objets mis en cache en fonction de balises sémantiques plutôt que de chemins d'URL. Cela vous permet de contrôler de manière flexible l'invalidation du cache sans que votre structure d'URL corresponde à votre stratégie d'invalidation.

## Comment fonctionne l'invalidation des balises
<a name="invalidation-by-tags-how-it-works"></a>

1. **Configurez votre distribution** : ajoutez un ` CacheTagConfig` à votre distribution en spécifiant le nom d'en-tête HTTP que votre origine utilise pour renvoyer les balises de cache.

1. **Marquez les objets à votre origine** : lorsque vous renvoyez un objet que vous souhaitez mettre en cache avec des balises, configurez votre origine pour inclure l'en-tête spécifié dans les réponses HTTP avec des valeurs de balise séparées par des virgules.

   ```
   HTTP/1.1 200 OK
   Content-Type: text/html
   x-amz-meta-cache-tag: product:electronics, category:tv, brand:example
   Cache-Control: max-age=3600
   ```
**Note**  
Pour les origines S3, vous pouvez associer des balises de cache à vos objets S3 sous forme de métadonnées. Vous pouvez ajouter une entrée de métadonnées avec la clé de votre choix (exemple :` cache-tag`) et une liste de balises séparées par des virgules comme valeur (exemple :`product:electronics, category:tv, brand:example`).  
S3 affiche les métadonnées des objets sous forme d'en-têtes de réponse préfixés par` x-amz-meta-<Key>`, de sorte qu'une clé de métadonnées de `cache-tag` serait renvoyée sous forme d'`x-amz-meta-cache-tag`en-tête. Vous pouvez configurer le ` HeaderName` in your `CacheTagConfig` ` x-amz-meta-cache-tag` pour activer l'envoi d'invalidations à ces balises.
**Note**  
Vous pouvez également associer une fonction Lambda @Edge de réponse d'origine à votre comportement de cache pour ajouter des en-têtes de balises de cache. Si vous utilisez Lambda @Edge, le nom de l'en-tête n'a pas besoin de suivre le `x-amz-meta-<Key>` format.

1. **Invalider par balise** : utilisez l'` CreateInvalidation`API avec le `#` préfixe pour invalider tous les objets mis en cache avec la balise spécifiée.

   ```
   aws cloudfront create-invalidation \
     --distribution-id {{distribution_ID}} \
     --paths "#product:electronics"
   ```

   Cela invalide TOUS les objets mis en cache qui contiennent la balise` product:electronics`, quel que soit leur chemin d'URL.

## Exigences relatives au format des balises
<a name="invalidation-by-tags-format"></a>

 **Valeur de l'en-tête de réponse d'origine :** 
+ Les balises sont séparées par des virgules dans la valeur d'en-tête.
+ Les espaces de début et de fin autour de chaque étiquette sont rognés.
+ Les deux `tag1,tag2,tag3` `tag1, tag2, tag3` sont valides et équivalents.

 **Valeurs des balises individuelles :** 
+ Caractères ASCII visibles (33—126)
+ Pas de caractères de contrôle, d'espaces ou de virgules
+ Insensible aux majuscules
+ 256 caractères maximum par étiquette
+ 50 balises maximum par objet (les balises supplémentaires sont ignorées)

## Configuration d'une distribution pour les invalidations de balises
<a name="invalidation-by-tags-configuring"></a>

Pour activer les invalidations de balises, ajoutez un `CacheTagConfig` à votre configuration de distribution :

```
aws cloudfront create-distribution \
  --distribution-config '{
    "CallerReference": "my-distribution",
    "CacheTagConfig": {
      "HeaderName": "x-amz-meta-cache-tag"
    },
    "DefaultCacheBehavior": {
      "TargetOriginId": "myOrigin",
      "ViewerProtocolPolicy": "redirect-to-https",
      "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6"
    },
    "Origins": { ... },
    "Enabled": true,
    "Comment": "Distribution with tag support"
  }'
```

## Création d'invalidations de balises
<a name="invalidation-by-tags-creating"></a>

Utilisez le `#` préfixe dans le `--paths` paramètre pour spécifier les balises :

```
# Invalidate all objects tagged with "user1"
aws cloudfront create-invalidation \
  --distribution-id {{distribution_ID}} \
  --paths "#user1"

# Invalidate objects matching any of multiple tags (OR logic)
aws cloudfront create-invalidation \
  --distribution-id {{distribution_ID}} \
  --paths "#user1" "#product-category:electronics"

# Mix path and tag invalidations in one batch
aws cloudfront create-invalidation \
  --distribution-id {{distribution_ID}} \
  --paths "/index.html" "#user1" "/images/*" "#product-category:electronics"
```

## Vérification de l'état d'invalidation
<a name="invalidation-by-tags-checking-status"></a>

`GetInvalidation`À utiliser pour vérifier le statut. La réponse inclut à la fois des éléments de chemin et de balise :

```
aws cloudfront get-invalidation \
  --distribution-id {{distribution_ID}} \
  --id {{invalidation_ID}}
```

## Considérations importantes
<a name="invalidation-by-tags-considerations"></a>
+ **Inscription requise :** l'invalidation des balises ne fonctionne que sur les distributions configurées. `CacheTagConfig` Les distributions dépourvues de cette configuration ignorent les en-têtes des balises de cache dès l'origine.
+ **Limites de traitement des balises** : CloudFront traite jusqu'à 50 balises par objet mis en cache. Si une réponse d'origine contient plus de 50 balises, les balises supplémentaires au-delà de la limite ne sont pas stockées.
+ **Modification du nom de l'en-tête** : les invalidations de balises sont comparées à la configuration actuelle`CacheTagConfig`. Si vous modifiez le `HeaderName` in`CacheTagConfig`, les invalidations émises pour les objets mis en cache avec des balises sous l'ancien nom d'en-tête ne seront plus évaluées. Si vous devez modifier le nom de l'en-tête, commencez à renvoyer les nouveaux et anciens en-têtes de balises de cache avec vos objets, puis annulez le chemin (par exemple`/*`) ou invalidez les balises existantes avant de modifier le nom de l'en-tête afin d'éviter de diffuser du contenu obsolète. Une fois cela fait, vous pouvez arrêter d'envoyer l'ancien en-tête des balises de cache avec vos objets.
+ **Suppression CacheTagConfig** : lorsque vous supprimez ` CacheTagConfig` d'une distribution, l'extraction des balises des réponses d'origine CloudFront s'arrête. Les objets mis en cache existants dotés de balises sont servis normalement jusqu'à leur expiration ou jusqu'à ce qu'ils soient invalidés par le chemin.
+ **Rétrocompatibilité** : les invalidations de chemins et de caractères génériques existantes continuent de fonctionner sans modification. Les invalidations de balises sont additives : vous pouvez utiliser les deux méthodes sur la même distribution.
+ **Locataires de distribution** : l'invalidation des balises est également prise en charge pour les locataires de distribution via l'` CreateInvalidationForDistributionTenant`API.

## Exemples de cas d’utilisation
<a name="invalidation-by-tags-examples"></a>

### Exemple 1 : catalogue de produits de commerce électronique
<a name="invalidation-by-tags-example-ecommerce"></a>

Un site de commerce électronique étiquette les pages de produits mises en cache avec le produit, la catégorie et la marque :

```
x-amz-meta-cache-tag: category:electronics, brand:acme, product:12345
```

Lorsqu'ACME met à jour son image de marque, invalidez tous les produits ACME en même temps :

```
aws cloudfront create-invalidation \
  --distribution-id {{distribution_ID}} \
  --paths "#brand:acme"
```

### Exemple 2 : plateforme de contenu générée par les utilisateurs
<a name="invalidation-by-tags-example-ugc"></a>

Une plateforme étiquette le contenu mis en cache avec le nom d'utilisateur du propriétaire :

```
x-amz-meta-cache-tag: user:12345, content-type:image
```

Lorsqu'un utilisateur ferme son compte, invalidez tout son contenu une fois que vous l'avez supprimé de l'origine :

```
aws cloudfront create-invalidation \
  --distribution-id {{distribution_ID}} \
  --paths "#user:12345"
```

### Exemple 3 : gestion des versions du contenu
<a name="invalidation-by-tags-example-versioning"></a>

Un CMS balise le contenu avec des identifiants de version :

```
x-amz-meta-cache-tag: version:v2, template:homepage
```

Lors du déploiement d'une nouvelle version, invalidez tout le contenu de la version 2 :

```
aws cloudfront create-invalidation \
  --distribution-id {{distribution_ID}} \
  --paths "#version:v2"
```