

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.

# Routes
<a name="routes"></a>

**Important**  
Avis de fin de support : le 30 septembre 2026, AWS le support de. AWS App Mesh Après le 30 septembre 2026, vous ne pourrez plus accéder à la AWS App Mesh console ni aux AWS App Mesh ressources. Pour plus d'informations, consultez ce billet de blog [intitulé Migration from AWS App Mesh to Amazon ECS Service Connect](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect). 

Un itinéraire est associé à un routeur virtuel. La route est utilisée pour répondre aux demandes du routeur virtuel et pour distribuer le trafic à ses nœuds virtuels associés. Si un itinéraire correspond à une demande, il peut distribuer le trafic vers un ou plusieurs nœuds virtuels cibles. Vous pouvez définir une pondération relative pour chaque nœud virtuel. Cette rubrique vous aide à utiliser des itinéraires dans un maillage de services.

## Création d'un itinéraire
<a name="create-route"></a>

------
#### [ AWS Management Console ]

**Pour créer un itinéraire à l'aide du AWS Management Console**

1. Ouvrez la console App Mesh à l'adresse [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/). 

1. Choisissez le maillage dans lequel vous souhaitez créer l'itinéraire. Tous les maillages que vous possédez et qui ont été [partagés](sharing.md) avec vous sont répertoriés.

1. Choisissez **Virtual routeurs (Routeurs virtuels)** dans le panneau de navigation gauche.

1. Choisissez le routeur virtuel auquel vous souhaitez associer un nouvel itinéraire. Si aucun n'est répertorié, vous devez d'abord [créer un routeur virtuel](virtual_routers.md#create-virtual-router).

1. Dans le tableau **Routes**, choisissez **Create route (Créer une route)**. Pour créer un itinéraire, votre identifiant de compte doit être indiqué en tant que **propriétaire de la ressource** de l'itinéraire.

1. Pour **Route name (Nom de route)**, indiquez le nom à utiliser pour votre route.

1. Dans **Type de route**, choisissez le protocole que vous souhaitez router. Le protocole que vous sélectionnez doit correspondre au protocole d'écoute que vous avez sélectionné pour votre routeur virtuel et le nœud virtuel vers lequel vous acheminez le trafic.

1. (Facultatif) Pour la **priorité de l'itinéraire**, spécifiez une priorité comprise entre 0 et 1 000 à utiliser pour votre itinéraire. La correspondance pour les routes se fait en fonction de la valeur spécifiée, où 0 est la priorité la plus haute.

1. (Facultatif) Choisissez **Configuration supplémentaire**. Dans les protocoles ci-dessous, choisissez le protocole que vous avez sélectionné pour le **type de route** et spécifiez les paramètres souhaités dans la console.

1. Pour la **configuration de Target**, sélectionnez le nœud virtuel App Mesh existant vers lequel acheminer le trafic et spécifiez un **poids**. Vous pouvez choisir **Ajouter une cible** pour ajouter des cibles supplémentaires. Le pourcentage pour toutes les cibles doit être égal à 100. Si aucun nœud virtuel n'est répertorié, vous devez d'abord en [créer](virtual_nodes.md#vn-create-virtual-node) un. Si le nœud virtuel sélectionné possède plusieurs écouteurs, le **port cible** est **requis.**

1. Pour la configuration **Match**, spécifiez :

   *La configuration **Match** n'est pas disponible pour `tcp`*
   + 

     Si **http/http2** est le type sélectionné :
     + (Facultatif) **Méthode** ‐ spécifie l'en-tête de méthode à mettre en correspondance dans les requêtes **http**/**http2** entrantes.
     + (Facultatif) **Correspondance des ports** ‐ Faites correspondre le port pour le trafic entrant. La correspondance des ports est **requise** si ce routeur virtuel possède plusieurs écouteurs.
     + (Facultatif) **Prefix/Exact/Regexpath** ‐ méthode permettant de faire correspondre le chemin de l'URL.
       + **Correspondance de préfixe** ‐ une demande correspondante par une route de passerelle est réécrite au nom du service virtuel cible et le préfixe correspondant est réécrit, par défaut. `/` Selon la façon dont vous configurez votre service virtuel, celui-ci peut utiliser un routeur virtuel pour acheminer la demande vers différents nœuds virtuels, en fonction de préfixes ou d'en-têtes spécifiques. 
**Note**  
Si vous activez la correspondance basée sur **le chemin** et le **préfixe**, App Mesh permet la normalisation des chemins ([normalize\$1path](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-normalize-path) et [merge\$1slashes](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-merge-slashes)) afin de minimiser la probabilité de vulnérabilités liées à la confusion des chemins.  
Des vulnérabilités liées à la confusion des chemins se produisent lorsque les parties participant à la demande utilisent des représentations de chemin différentes.
       + **Correspondance** exacte ‐ le paramètre exact désactive la correspondance partielle pour un itinéraire et garantit qu'il ne renvoie l'itinéraire que si le chemin correspond EXACTEMENT à l'URL actuelle.
       + **Regex match** ‐ utilisé pour décrire des modèles dans lesquels plusieurs URLs peuvent en fait identifier une seule page sur le site Web.
     + (Facultatif) **Paramètres de requête** ‐ Ce champ vous permet de faire correspondre les paramètres de la requête.
     + **(Facultatif) **En-têtes** ‐ spécifie les en-têtes pour **http et http2**.** Il doit correspondre à la demande entrante à acheminer vers le service virtuel cible.
   + 

     Si **grpc** est le type sélectionné :
     + **Nom du service** ‐ le service de destination pour lequel la demande doit correspondre.
     + **Nom de la méthode** ‐ la méthode de destination pour laquelle correspondre à la demande.
     + (Facultatif) **Métadonnées** ‐ Spécifie la `Match` base de la présence de métadonnées. Tous doivent correspondre pour que la demande soit traitée.

1. Sélectionnez **Créer un itinéraire**.

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

**Pour créer un itinéraire à l'aide du AWS CLI.**

Créez une route gRPC à l'aide de la commande suivante et saisissez le code JSON (remplacez les *red* valeurs par les vôtres) :

1. 

   ```
   aws appmesh create-route \
        --cli-input-json file://create-route-grpc.json
   ```

1. Contenu de l'**exemple** create-route-grpc .json

   ```
   {
       "meshName" : "meshName",
       "routeName" : "routeName",
       "spec" : {
          "grpcRoute" : {
             "action" : {
                "weightedTargets" : [
                   {
                      "virtualNode" : "nodeName",
                      "weight" : 100
                   }
                ]
             },
             "match" : {
                "metadata" : [
                   {
                      "invert" : false,
                      "match" : {
                         "prefix" : "123"
                      },
                      "name" : "myMetadata"
                   }
                ],
                "methodName" : "nameOfmethod",
                "serviceName" : "serviceA.svc.cluster.local"
             },
             "retryPolicy" : {
                "grpcRetryEvents" : [ "deadline-exceeded" ],
                "httpRetryEvents" : [ "server-error", "gateway-error" ],
                "maxRetries" : 3,
                "perRetryTimeout" : {
                   "unit" : "s",
                   "value" : 15
                },
                "tcpRetryEvents" : [ "connection-error" ]
             }
          },
          "priority" : 100
       },
       "virtualRouterName" : "routerName"
   }
   ```

1. Exemple de sortie :

   ```
   {
       "route": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualRouter/routerName/route/routeName",
               "createdAt": "2022-04-06T13:48:20.749000-05:00",
               "lastUpdatedAt": "2022-04-06T13:48:20.749000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 1
           },
           "routeName": "routeName",
           "spec": {
               "grpcRoute": {
                   "action": {
                       "weightedTargets": [
                           {
                               "virtualNode": "nodeName",
                               "weight": 100
                           }
                       ]
                   },
                   "match": {
                       "metadata": [
                           {
                               "invert": false,
                               "match": {
                                   "prefix": "123"
                               },
                               "name": "myMetadata"
                           }
                       ],
                       "methodName": "nameOfMehod",
                       "serviceName": "serviceA.svc.cluster.local"
                   },
                   "retryPolicy": {
   "grpcRetryEvents": [
                           "deadline-exceeded"
                       ],
                       "httpRetryEvents": [
                           "server-error",
                           "gateway-error"
                       ],
                       "maxRetries": 3,
                       "perRetryTimeout": {
                           "unit": "s",
                           "value": 15
                       },
                       "tcpRetryEvents": [
                           "connection-error"
                       ]
                   }
               },
               "priority": 100
           },
           "status": {
               "status": "ACTIVE"
           },
           "virtualRouterName": "routerName"
       }
   }
   ```

Pour plus d'informations sur la création d'un itinéraire avec le AWS CLI for App Mesh, consultez la commande [create-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-route.html) dans la AWS CLI référence.

------

### gRPC
<a name="grpc"></a>

### (Facultatif) **Correspondance**

+ (Facultatif) Entrez le **nom** du service de destination correspondant à la demande. Si vous ne spécifiez aucun nom, les demandes adressées à n'importe quel service sont mises en correspondance.
+ (Facultatif) Entrez le **nom** de la méthode de destination correspondant à la demande. Si vous ne spécifiez aucun nom, les demandes adressées à n'importe quelle méthode sont mises en correspondance. Si vous spécifiez un nom de méthode, vous devez indiquer un nom de service.

### (Facultatif) **Métadonnées**


Sélectionnez **Ajouter des métadonnées**.
+ (Facultatif) Entrez le **nom des métadonnées** sur lequel vous souhaitez effectuer le routage, sélectionnez un **type de correspondance** et entrez une **valeur de correspondance**. Si vous sélectionnez **Inverser**, vous obtiendrez le résultat inverse. Par exemple, si vous spécifiez un **nom de métadonnées** de`myMetadata`, un **type de correspondance** **exact**, une **valeur de correspondance** de `123` et que vous sélectionnez **Inverser**, l'itinéraire est mis en correspondance pour toute demande dont le nom de métadonnées commence par autre chose que`123`.
+ (Facultatif) Sélectionnez **Ajouter des métadonnées** pour ajouter jusqu'à dix éléments de métadonnées. 

### (Facultatif) Politique **de nouvelle tentative**


Une stratégie de nouvelle tentative permet aux clients de se protéger contre les défaillances intermittentes du réseau et les défaillances intermittentes côté serveur. Une politique de nouvelle tentative est facultative, mais recommandée. Les valeurs du délai d'expiration définissent le délai d'expiration par nouvelle tentative (y compris la tentative initiale). Si vous ne définissez pas de politique de réessai, App Mesh peut créer automatiquement une politique par défaut pour chacun de vos itinéraires. Pour de plus amples informations, veuillez consulter [Politique de nouvelle tentative d'itinéraire par défaut](envoy-defaults.md#default-retry-policy).
+ Pour **Réessayer**, entrez le nombre d'unités correspondant à la durée du délai d'expiration. Une valeur est requise si vous sélectionnez un événement de nouvelle tentative de protocole.
+ Pour l'unité **de temporisation de la nouvelle tentative, sélectionnez une unité**. Une valeur est requise si vous sélectionnez un événement de nouvelle tentative de protocole.
+ Pour **Nombre maximal de tentatives**, entrez le nombre maximal de tentatives en cas d'échec de la demande. Une valeur est requise si vous sélectionnez un événement de nouvelle tentative de protocole. Nous recommandons une valeur d'au moins deux.
+ Sélectionnez un ou plusieurs **événements de nouvelle tentative HTTP**. **Nous vous recommandons de sélectionner au moins **stream-error et gateway-error**.**
+ Sélectionnez un événement **de nouvelle tentative TCP**.
+ Sélectionnez un ou plusieurs événements de nouvelle **tentative de gRPC**. Nous vous recommandons de sélectionner au moins **annulé** et **indisponible**.

### **Temporisations (facultatives)**

+ La valeur par défaut est de 15 secondes. Si vous avez défini une **politique de nouvelles tentatives**, la durée que vous spécifiez ici doit toujours être supérieure ou égale à la durée de nouvelles tentatives multipliée par le nombre **maximal de tentatives que vous avez défini dans la politique de nouvelles tentatives** afin que votre **politique de nouvelles tentatives** puisse être appliquée. Si vous spécifiez une durée supérieure à 15 secondes, assurez-vous que le délai d'attente spécifié pour l'écouteur de n'importe quel nœud virtuel **Target** est également supérieur à 15 secondes. Pour plus d'informations, consultez la section [Nœuds virtuels](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html).
+ La valeur `0` désactive le délai d’attente. 
+ Durée maximale pendant laquelle l'itinéraire peut être inactif.

### HTTP et HTTP/2
<a name="http-http2"></a>

### (Facultatif) Correspondance

+ Spécifiez le **préfixe** auquel l'itinéraire doit correspondre. Par exemple, si votre nom de service virtuel est `service-b.local` et que vous souhaitez que la route fasse correspondre des demandes à `service-b.local/metrics`, votre préfixe doit être `/metrics`. Spécifier `/` les itinéraires pour tout le trafic.
+ (Facultatif) Sélectionnez une **méthode**. 
+ (Facultatif) Sélectionnez un **schéma**. Applicable uniquement pour HTTP2 les itinéraires. 

### En-têtes (facultatifs)

+ (Facultatif) Sélectionnez **Ajouter un en-tête**. Entrez le **nom de l'en-tête** sur lequel vous souhaitez effectuer le routage, sélectionnez un **type de correspondance** et entrez une **valeur de correspondance**. Si vous sélectionnez **Inverser**, vous obtiendrez le résultat inverse. Par exemple, si vous spécifiez un en-tête nommé `clientRequestId` avec un **préfixe** de `123` et que vous sélectionnez **Inverser**, l'itinéraire correspond à toute demande dont l'en-tête commence par autre chose que. `123`
+ (Facultatif) Sélectionnez **Ajouter un en-tête**. Vous pouvez ajouter jusqu'à dix en-têtes. 

### **(Facultatif) Politique de nouvelle tentative**


Une stratégie de nouvelle tentative permet aux clients de se protéger contre les défaillances intermittentes du réseau et les défaillances intermittentes côté serveur. Une politique de nouvelle tentative est facultative, mais recommandée. Les valeurs du délai d'expiration définissent le délai d'expiration par nouvelle tentative (y compris la tentative initiale). Si vous ne définissez pas de politique de réessai, App Mesh peut créer automatiquement une politique par défaut pour chacun de vos itinéraires. Pour de plus amples informations, veuillez consulter [Politique de nouvelle tentative d'itinéraire par défaut](envoy-defaults.md#default-retry-policy).
+ Pour **Réessayer**, entrez le nombre d'unités correspondant à la durée du délai d'expiration. Une valeur est requise si vous sélectionnez un événement de nouvelle tentative de protocole.
+ Pour l'unité **de temporisation de la nouvelle tentative, sélectionnez une unité**. Une valeur est requise si vous sélectionnez un événement de nouvelle tentative de protocole.
+ Pour **Nombre maximal de tentatives**, entrez le nombre maximal de tentatives en cas d'échec de la demande. Une valeur est requise si vous sélectionnez un événement de nouvelle tentative de protocole. Nous recommandons une valeur d'au moins deux.
+ Sélectionnez un ou plusieurs **événements de nouvelle tentative HTTP**. **Nous vous recommandons de sélectionner au moins **stream-error et gateway-error**.**
+ Sélectionnez un événement **de nouvelle tentative TCP**.

### **Temporisations (facultatives)**

+ **Délai d'expiration de la demande** : la valeur par défaut est de 15 secondes. Si vous avez défini une **politique de nouvelles tentatives**, la durée que vous spécifiez ici doit toujours être supérieure ou égale à la durée de nouvelles tentatives multipliée par le nombre **maximal de tentatives que vous avez défini dans la politique de nouvelles tentatives** afin que votre **politique de nouvelles tentatives** puisse être appliquée.
+ **Durée d'inactivité** : la valeur par défaut est de 300 secondes.
+ La valeur `0` désactive le délai d’attente.

**Note**  
 Si vous spécifiez un délai d'attente supérieur à la valeur par défaut, assurez-vous que le délai spécifié pour l'écouteur pour tous les participants du nœud virtuel est également supérieur à la valeur par défaut. Toutefois, si vous réduisez le délai d'expiration à une valeur inférieure à la valeur par défaut, il est facultatif de mettre à jour le délai d'expiration au niveau des nœuds virtuels. Pour plus d'informations, consultez la section [Nœuds virtuels](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html).

### TCP
<a name="tcp"></a>

### **Temporisations (facultatives)**

+ **Durée d'inactivité** : la valeur par défaut est de 300 secondes.
+ La valeur `0` désactive le délai d’attente.

## Supprimer un itinéraire
<a name="delete-route"></a>

------
#### [ AWS Management Console ]

**Pour supprimer un itinéraire à l'aide du AWS Management Console**

1. Ouvrez la console App Mesh à l'adresse [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/). 

1. Choisissez le maillage à partir duquel vous souhaitez supprimer un itinéraire. Tous les maillages que vous possédez et qui ont été [partagés](sharing.md) avec vous sont répertoriés.

1. Choisissez **Virtual routeurs (Routeurs virtuels)** dans le panneau de navigation gauche.

1. Choisissez le routeur à partir duquel vous souhaitez supprimer un itinéraire.

1. Dans le tableau **Routes**, choisissez l'itinéraire que vous souhaitez supprimer et sélectionnez **Supprimer** dans le coin supérieur droit.

1. Dans le champ de confirmation, tapez **delete** puis cliquez sur **Supprimer**.

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

**Pour supprimer un itinéraire à l'aide du AWS CLI**

1. Utilisez la commande suivante pour supprimer votre itinéraire (remplacez les *red* valeurs par les vôtres) :

   ```
   aws appmesh delete-route \
        --mesh-name meshName \
        --virtual-router-name routerName \
        --route-name routeName
   ```

1. Exemple de sortie :

   ```
   {
       "route": {
           "meshName": "meshName",
           "metadata": {
               "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualRouter/routerName/route/routeName",
               "createdAt": "2022-04-06T13:46:54.750000-05:00",
               "lastUpdatedAt": "2022-04-07T10:43:57.152000-05:00",
               "meshOwner": "123456789012",
               "resourceOwner": "210987654321",
               "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "version": 2
           },
           "routeName": "routeName",
           "spec": {
               "grpcRoute": {
                   "action": {
                       "weightedTargets": [
                           {
                               "virtualNode": "nodeName",
                               "weight": 100
                           }
                       ]
                   },
                   "match": {
                       "metadata": [
                           {
                               "invert": false,
                               "match": {
                                   "prefix": "123"
                               },
                               "name": "myMetadata"
                           }
                       ],
                       "methodName": "methodName",
                       "serviceName": "serviceA.svc.cluster.local"
                   },
                   "retryPolicy": {
                       "grpcRetryEvents": [
                           "deadline-exceeded"
                       ],
                       "httpRetryEvents": [
                           "server-error",
                           "gateway-error"
                       ],
                       "maxRetries": 3,
                       "perRetryTimeout": {
                           "unit": "s",
                           "value": 15
                       },
                       "tcpRetryEvents": [
                           "connection-error"
                       ]
                   }
               },
               "priority": 100
           },
           "status": {
               "status": "DELETED"
           },
           "virtualRouterName": "routerName"
       }
   }
   ```

Pour plus d'informations sur la suppression d'un itinéraire avec le AWS CLI for App Mesh, consultez la commande [delete-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-route.html) dans la AWS CLI référence.

------