Rutas - AWS App Mesh

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

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, visita esta entrada de blog Migración desde AWS App Mesh a 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

AWS Management Console
Para crear una ruta utilizando el AWS Management Console
  1. Abre la consola App Mesh en https://console.aws.amazon.com/appmesh/.

  2. Elija la malla en la que desea crear la ruta. Se muestran todas las mallas de su propiedad y que se han compartido con usted.

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

  4. Elija el enrutador virtual que desea asociar a una nueva ruta. Si no hay ninguno en la lista, debe crear un enrutador virtual primero.

  5. 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.

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

  7. 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.

  8. (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.

  9. (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.

  10. 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 uno. Si el nodo virtual seleccionado tiene varios oyentes, se requiere el Puerto de destino.

  11. 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.

      • (Opcional) Ruta de prefijo/exacta/expresión regular ‐ método para hacer coincidir la ruta del. 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_path y 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.

        • Concordancia exacta: el parámetro exacto desactiva la coincidencia parcial de una ruta y se asegura de que solo devuelva la ruta si la ruta coincide con la URL actual. EXACT

        • Concordancia de expresiones regulares: se usa para describir patrones en los que múltiples URLs 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.

  12. Seleccione Crear ruta.

AWS CLI

Para crear una ruta mediante la AWS CLI.

Cree una RPC ruta g con el siguiente comando e introduzca JSON (sustituya el red valores por los tuyos propios):

  1. aws appmesh create-route \ --cli-input-json file://create-route-grpc.json
  2. Contenido del ejemplo ( 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" }
  3. Ejemplo 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 en la AWS CLI referencia. AWS CLI

(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.

  • 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 HTTP de reintento. Recomendamos seleccionar al menos stream-error y gateway-error.

  • Selecciona un evento de TCPreintento.

  • Selecciona uno o más eventos de g RPC reintentar. 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.

  • Un valor de 0 deshabilita el tiempo de espera.

  • El periodo tiempo máximo que la ruta puede permanecer inactiva.

(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 HTTP2 las rutas.

(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.

  • 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 HTTP de reintento. Recomendamos seleccionar al menos stream-error y gateway-error.

  • Selecciona un evento de TCPreintento.

(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.

(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

AWS Management Console
Para eliminar una ruta mediante el AWS Management Console
  1. Abre la consola App Mesh en https://console.aws.amazon.com/appmesh/.

  2. 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 con usted.

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

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

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

  6. 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 el red valores por los tuyos propios):

    aws appmesh delete-route \ --mesh-name meshName \ --virtual-router-name routerName \ --route-name routeName
  2. Ejemplo 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 en la AWS CLI referencia. AWS CLI