

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

**importante**  
Aviso de fin de soporte: el 30 de septiembre de 2026, AWS dejaremos de ofrecer soporte para AWS App Mesh. Después del 30 de septiembre de 2026, ya no podrás acceder a la AWS App Mesh consola ni a AWS App Mesh los recursos. Para obtener más información, visite esta entrada del blog [Migración desde AWS App Mesh a Amazon ECS Service Connect](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect). 

Se asocia una ruta a un enrutador virtual. La ruta se usa para hacer coincidir las solicitudes del enrutador virtual y distribuir el tráfico a sus nodos virtuales asociados. Si una ruta coincide con una solicitud, puede distribuir el tráfico a uno o varios nodos virtuales de destino. Puede especificar la ponderación relativa para cada nodo virtual. Este tema lo ayuda a trabajar con rutas en una malla de servicio.

## Creación de una ruta
<a name="create-route"></a>

------
#### [ Consola de administración de AWS ]

**Para crear una ruta mediante el Consola de administración de AWS**

1. Abre la consola App Mesh en [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/). 

1. Elija la malla en la que desea crear la ruta. Se muestran todas las mallas de su propiedad y que se han [compartido](sharing.md) con usted.

1. Elija **Routers virtuales** en el panel de navegación izquierdo.

1. Elija el enrutador virtual que desea asociar a una nueva ruta. Si no hay ninguno en la lista, debe [crear un enrutador virtual](virtual_routers.md#create-virtual-router) primero.

1. En la tabla **Rutas**, elija **Crear ruta**. Para crear una ruta, el ID de su cuenta debe figurar como **Propietario del recurso** de la ruta.

1. En **Route name (Nombre de la ruta)**, especifique el nombre que se va a utilizar para la ruta.

1. En **Tipo de ruta**, elija el protocolo que desea para la ruta. El protocolo que seleccione debe coincidir con el protocolo del oyente que seleccionó para su enrutador virtual y el nodo virtual al que está enrutando el tráfico.

1. (Opcional) En **Prioridad de la ruta**, especifique una prioridad de 0 a 1000 para usarla en la ruta. Las rutas se asignan en función del valor especificado, siendo 0 la máxima prioridad.

1. (Opcional) Elija **Configuración adicional**. De los protocolos que aparecen a continuación, elija el protocolo que haya seleccionado para **Tipo de ruta** y especifique la configuración que desee en la consola.

1. En **Configuración de destino**, seleccione el nodo virtual de App Mesh existente al que dirigir el tráfico y especifique una **Ponderación**. Puede elegir **Agregar objetivo** para añadir destinos adicionales. El porcentaje de todos los destinos debe sumar 100. Si no aparece ningún nodo virtual, primero debe [crear](virtual_nodes.md#vn-create-virtual-node) uno. Si el nodo virtual seleccionado tiene varios oyentes, se **requiere** el **Puerto de destino**.

1. Para la configuración de **Coincidencia**, especifique:

   *La configuración de **Coincidencia** no está disponible para `tcp`*
   + 

     Si el tipo seleccionado es **http/http2:**
     + (Opcional) **Método**: especifica el encabezado del método que debe coincidir en las solicitudes **http**/**http2** entrantes.
     + (Opcional) **Coincidencia de puerto**: hace coincidir el puerto del tráfico entrante. La coincidencia de puerto es **necesaria** si este enrutador virtual tiene varios oyentes.
     + **Prefix/Exact/RegexRuta** (opcional): método para hacer coincidir la ruta de la URL.
       + **Coincidencia de prefijo**: una solicitud coincidente de una ruta de puerta de enlace se reescribe con el nombre del servicio virtual de destino y, de forma predeterminada, el prefijo coincidente se reescribe con `/`. Según cómo configure el servicio virtual, podría utilizar un enrutador virtual para enrutar la solicitud a diferentes nodos virtuales, en función de prefijos o encabezados específicos. 
**nota**  
Si habilita la coincidencia basada en **Ruta**/**prefijo**, App Mesh habilita la normalización de rutas ([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) y [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)) para reducir la probabilidad de que se produzcan vulnerabilidades de confusión de rutas.  
Las vulnerabilidades de confusión de rutas se producen cuando las partes que participan en la solicitud utilizan diferentes representaciones de rutas.
       + **Coincidencia exacta**: el parámetro exacto desactiva la coincidencia parcial de una ruta y garantiza que solo devuelva la ruta si la ruta coincide EXACTAMENTE con la URL actual.
       + **Concordancia de expresiones** regulares: se utiliza para describir patrones en los URLs que varias páginas pueden identificar una sola página del sitio web.
     + (Opcional) **Parámetros de consulta**: este campo permite hacer coincidir los parámetros de la consulta.
     + (Opcional) **Encabezados**: especifica los encabezados de **http** y **http2**. Debe coincidir con la solicitud entrante para enrutarse al servicio virtual de destino.
   + 

     Si **grpc** es el tipo seleccionado:
     + **Nombre del servicio**: el servicio de destino para el que se debe hacer coincidir la solicitud.
     + **Nombre del método**: el método de destino para el que se debe hacer coincidir la solicitud.
     + (Opcional) **Metadatos**: especifica `Match` en función de la presencia de metadatos. Todos deben coincidir para que se procese la solicitud.

1. Seleccione **Crear ruta**.

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

**Para crear una ruta mediante la AWS CLI.**

Cree una ruta gRPC con el siguiente comando e introduzca JSON (sustituya los *red* valores por los suyos):

1. 

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

1. Contenido del **ejemplo .json** create-route-grpc

   ```
   {
       "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. Ejemplo de código de salida:

   ```
   {
       "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"
       }
   }
   ```

Para obtener más información sobre cómo crear una ruta con App Mesh, consulta el comando [create-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/create-route.html) en la AWS CLI referencia. AWS CLI 

------

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

### (Opcional) **Coincidencia**

+ (Opcional) Escriba el **Nombre del servicio** de destino para que coincida con la solicitud. Si no especifica un nombre, las solicitudes coincidirán con cualquier servicio.
+ (Opcional) Escriba el **Nombre del método** de destino para que coincida con la solicitud. Si no especifica un nombre, las solicitudes coincidirán con cualquier método. Si especifica un nombre de método, debe especificar un nombre de servicio.

### (Opcional) **Metadatos**


Elija **Agregar metadatos**.
+ (Opcional) Escriba el **Nombre de los metadatos** en el que desee basar la ruta, seleccione un **Tipo de coincidencia** e introduzca un **Valor de coincidencia**. Si selecciona **Invertir,** coincidirá con lo contrario. Por ejemplo, si especifica un **Nombre de los metadatos** `myMetadata`, un **Tipo de coincidencia** **exacto**, un **Valor de coincidencia** de `123` y selecciona **Invertir**, la ruta coincidirá con cualquier solicitud que tenga un nombre de metadatos que comience por un nombre distinto de `123`.
+ (Opcional) Seleccione **Agregar metadatos** para añadir hasta diez elementos de metadatos. 

### (Opcional) **Política de reintentos**


Una política de reintentos permite a los clientes protegerse de errores intermitentes de red o errores intermitentes del lado del servidor. Una política de reintentos es opcional, pero recomendable. Los valores del tiempo de espera de los reintentos definen el tiempo de espera por reintento (incluido el intento inicial). Si no define una política de reintentos, App Mesh puede crear automáticamente una política predeterminada para cada una de sus rutas. Para obtener más información, consulte [Política de reintentos de ruta predeterminada](envoy-defaults.md#default-retry-policy).
+ En **Tiempo de espera de reintento**, especifique el número de unidades de la duración del tiempo de espera. Se requiere un valor si selecciona cualquier evento de reintento de protocolo.
+ En **Unidad de tiempo de espera de reintento**, seleccione una unidad. Se requiere un valor si selecciona cualquier evento de reintento de protocolo.
+ En **Número máximo de reintentos** especifique el número máximo de reintentos en caso de que se produzca un error en la solicitud. Se requiere un valor si selecciona cualquier evento de reintento de protocolo. Recomendamos un valor de al menos dos.
+ Seleccione uno o más **Eventos de reintento HTTP**. Recomendamos seleccionar al menos **stream-error** y **gateway-error**.
+ Seleccione un **Evento de reintento HTTP**.
+ Seleccione uno o varios **Eventos de reintento de gRPC**. Recomendamos seleccionar al menos los eventos **cancelados** y **no disponibles**.

### **(Opcional) Tiempos de espera**

+ El valor predeterminado es de 15 segundos. Si especificó una **Política de reintentos**, la duración que indique aquí debe ser siempre mayor o igual a la duración de los reintentos multiplicada por el **Número máximo de reintentos** que haya definido en **Política de reintentos** para que la política de reintentos se complete. Si especifica una duración superior a 15 segundos, asegúrese de que el tiempo de espera definido para el oyente de cualquier **Destino** de nodo virtual también sea superior a 15 segundos. Para obtener más información, consulte [Nodos virtuales](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html).
+ Un valor de `0` deshabilita el tiempo de espera. 
+ El periodo tiempo máximo que la ruta puede permanecer inactiva.

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

### (Opcional) Coincidencia

+ Especifique el **Prefijo** con el que debe coincidir la ruta. Por ejemplo, si el nombre de servicio virtual es `service-b.local` y desea que la ruta se empareje con solicitudes para `service-b.local/metrics`, el prefijo debe ser `/metrics`. Especificación de las rutas `/` de todo el tráfico.
+ (Opcional) Seleccione un **Método**. 
+ (Opcional) Seleccione un **Esquema**. Aplicable solo a las rutas HTTP2 . 

### (Opcional) Encabezados

+ (Opcional) Seleccione **Agregar encabezado**. Escriba el **Nombre de encabezado** en función del cual desee realizar la ruta, seleccione un **Tipo de coincidencia** e introduzca un **Valor de coincidencia**. Si selecciona **Invertir**, coincidirá con lo contrario. Por ejemplo, si especifica un encabezado denominado `clientRequestId` con el **Prefijo** de `123` y selecciona **Invertir**, la ruta coincidirá con cualquier solicitud que tenga un encabezado que comience con un nombre distinto de `123`.
+ (Opcional) Seleccione **Agregar encabezado**. Puede agregar hasta diez encabezados. 

### **(Opcional) Política de reintentos**


Una política de reintentos permite a los clientes protegerse de errores intermitentes de red o errores intermitentes del lado del servidor. Una política de reintentos es opcional, pero recomendable. Los valores del tiempo de espera de los reintentos definen el tiempo de espera por reintento (incluido el intento inicial). Si no define una política de reintentos, App Mesh puede crear automáticamente una política predeterminada para cada una de sus rutas. Para obtener más información, consulte [Política de reintentos de ruta predeterminada](envoy-defaults.md#default-retry-policy).
+ En **Tiempo de espera de reintento**, especifique el número de unidades de la duración del tiempo de espera. Se requiere un valor si selecciona cualquier evento de reintento de protocolo.
+ En **Unidad de tiempo de espera de reintento**, seleccione una unidad. Se requiere un valor si selecciona cualquier evento de reintento de protocolo.
+ En **Número máximo de reintentos** especifique el número máximo de reintentos en caso de que se produzca un error en la solicitud. Se requiere un valor si selecciona cualquier evento de reintento de protocolo. Recomendamos un valor de al menos dos.
+ Seleccione uno o más **Eventos de reintento HTTP**. Recomendamos seleccionar al menos **stream-error** y **gateway-error**.
+ Seleccione un **Evento de reintento de TCP**.

### **(Opcional) Tiempos de espera**

+ **Tiempo de espera de la solicitud**: el valor predeterminado es de 15 segundos. Si especificó una **Política de reintentos**, la duración que indique aquí debe ser siempre mayor o igual a la duración de los reintentos multiplicada por el **Número máximo de reintentos** que haya definido en **Política de reintentos** para que la política de reintentos se complete.
+ **Duración de inactividad**: el valor predeterminado es de 300 segundos.
+ Un valor de `0` deshabilita el tiempo de espera.

**nota**  
 Si especifica un tiempo de espera superior al predeterminado, asegúrese de que el tiempo de espera especificado para el oyente para todos los participantes del nodo virtual también sea superior al predeterminado. Sin embargo, si reduce el tiempo de espera a un valor inferior al predeterminado; opcionalmente, puede actualizar los tiempos de espera en los nodos virtuales. Para obtener más información, consulte [Nodos virtuales](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html).

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

### **(Opcional) Tiempos de espera**

+ **Duración de inactividad**: el valor predeterminado es de 300 segundos.
+ Un valor de `0` deshabilita el tiempo de espera.

## Eliminación de una ruta
<a name="delete-route"></a>

------
#### [ Consola de administración de AWS ]

**Para eliminar una ruta mediante el Consola de administración de AWS**

1. Abre la consola App Mesh en [https://console.aws.amazon.com/appmesh/](https://console.aws.amazon.com/appmesh/). 

1. Elija la malla en la que desea eliminar una ruta. Se muestran todas las mallas que son de su propiedad y que se han [compartido](sharing.md) con usted.

1. Elija **Routers virtuales** en el panel de navegación izquierdo.

1. Elija el enrutador en el que desea eliminar una ruta.

1. En la tabla **Rutas**, elija la ruta que desee eliminar y seleccione **Eliminar** en la esquina superior derecha.

1. En el cuadro de confirmación, escriba **delete** y, a continuación, haga clic en **Eliminar**.

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

**Para eliminar una ruta mediante el AWS CLI**

1. Utilice el siguiente comando para eliminar la ruta (sustituya los *red* valores por los suyos propios):

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

1. Ejemplo de código de salida:

   ```
   {
       "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"
       }
   }
   ```

Para obtener más información sobre cómo eliminar una ruta con App Mesh, consulta el comando [delete-route](https://docs.aws.amazon.com/cli/latest/reference/appmesh/delete-route.html) en la AWS CLI referencia. AWS CLI 

------