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

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 mediante la AWS Management Console
  1. Abra la consola de 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 Virtual routers (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/regex: 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_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.

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

        • Coincidencia de regex: se utiliza para describir patrones en los que varias URL pueden identificar realmente 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 ruta gRPC mediante el siguiente comando y JSON de entrada (sustituya los valores rojos por los suyos):

  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 resultados:

    { "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 la AWS CLI para App Mesh, consulte el comando create-route en la referencia de 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 metadatosmyMetadata, 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 varios 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.

  • 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 sólo para 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.

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

(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 la AWS Management Console
  1. Abra la consola de 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 Virtual routers (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 la AWS CLI
  1. Use el siguiente comando para eliminar su ruta (sustituya los valores rojos por los suyos):

    aws appmesh delete-route \ --mesh-name meshName \ --virtual-router-name routerName \ --route-name routeName
  2. Ejemplo de resultados:

    { "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 acerca de cómo eliminar una ruta con la AWS CLI para App Mesh, consulte el comando delete-route en la referencia de AWS CLI.