Route - AWS App Mesh

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Route

Una route è associata a un router virtuale. Il percorso viene utilizzato per abbinare le richieste del router virtuale e per distribuire il traffico ai nodi virtuali associati. Se una route corrisponde a una richiesta, può distribuire il traffico a uno o più nodi virtuali di destinazione. È possibile specificare la ponderazione relativa per ogni nodo virtuale. Questo argomento consente di utilizzare route in una mesh dei servizi.

Creazione di un routing

AWS Management Console
Per creare un route mediante l'AWS Management Console
  1. Apri la console App Mesh all'indirizzo https://console.aws.amazon.com/appmesh/.

  2. Scegliere la mesh in cui si desidera creare il routing. Vengono elencate tutte le mesh che possiedi e che sono state condivise con te.

  3. Nel riquadro di navigazione sinistro, scegliere Virtual routers (Router virtuali).

  4. Scegliere il router virtuale a cui si desidera associare un nuovo routing. Se l'elenco risulta vuoto, è necessario creare prima un router virtuale.

  5. Nella tabella Routes (Route), scegliere Create route (Crea route). Per creare un percorso, l'ID dell'account deve essere indicato come proprietario della risorsa del percorso.

  6. In Route name (Nome route), specificare il nome da utilizzare per la route.

  7. Per Tipo di percorso, scegli il protocollo che desideri indirizzare. Il protocollo selezionato deve corrispondere al protocollo del listener selezionato per il router virtuale e al nodo virtuale verso cui indirizzare il traffico.

  8. (Facoltativo) Per la priorità del percorso, specifica una priorità compresa tra 0 e 1000 da utilizzare per il percorso. Le route vengono messe in corrispondenza in base al valore specificato, dove 0 è la priorità più alta.

  9. (Facoltativo) Scegli Configurazione aggiuntiva. Dai protocolli in basso, scegli il protocollo selezionato per il tipo di percorso e specifica le impostazioni nella console come desideri.

  10. Per la configurazione di Target, seleziona il nodo virtuale App Mesh esistente verso cui indirizzare il traffico e specifica un peso. Puoi scegliere Aggiungi obiettivo per aggiungere altri obiettivi. Sommati, la percentuale per tutti gli obiettivi deve raggiungere fino a 100. Se l'elenco risulta vuoto, è necessario crearne uno prima. Se il nodo virtuale selezionato ha più listener, è necessaria la porta Target.

  11. Per la configurazione Match, specifica:

    La configurazione della partita non è disponibile pertcp

    • Se http/http2 è il tipo selezionato:

      • (Facoltativo) Metodo ‐ specifica l'intestazione del metodo da abbinare nelle richieste http /http2 in entrata.

      • (Facoltativo) Corrispondenza porta ‐ Corrisponde alla porta per il traffico in entrata. La corrispondenza delle porte è necessaria se questo router virtuale ha più listener.

      • (Facoltativo) Percorso prefisso/esatto/regex ‐ metodo di corrispondenza del percorso dell'URL.

        • Prefix match: una richiesta corrispondente da parte di un gateway viene riscritta con il nome del servizio virtuale di destinazione e il prefisso corrispondente viene riscritto/, per impostazione predefinita. A seconda di come configuri il servizio virtuale, potrebbe utilizzare un router virtuale per indirizzare la richiesta a diversi nodi virtuali, in base a prefissi o intestazioni specifici.

          Nota

          Se abiliti la corrispondenza basata su Path/Prefix, App Mesh abilita la normalizzazione del percorso (normalize_path e merge_slashes) per ridurre al minimo la probabilità di vulnerabilità legate alla confusione dei percorsi.

          Le vulnerabilità legate alla confusione dei percorsi si verificano quando le parti che partecipano alla richiesta utilizzano rappresentazioni di percorso diverse.

        • Corrispondenza esatta ‐ il parametro esatto disabilita la corrispondenza parziale per un percorso e si assicura che restituisca il percorso solo se il percorso corrisponde ESATTAMENTE all'URL corrente.

        • Regex match ‐ utilizzato per descrivere modelli in cui più URL possono effettivamente identificare una singola pagina del sito Web.

      • (Facoltativo) Parametri di interrogazione: questo campo consente di confrontare i parametri dell'interrogazione.

      • (Facoltativo) Headers ‐ specifica le intestazioni per http e http2. Dovrebbe corrispondere alla richiesta in entrata da indirizzare al servizio virtuale di destinazione.

    • Se grpc è il tipo selezionato:

      • Nome del servizio ‐ il servizio di destinazione per il quale soddisfare la richiesta.

      • Nome del metodo: il metodo di destinazione per il quale soddisfare la richiesta.

      • (Facoltativo) Metadati ‐ specifica inMatch base alla presenza di metadati. Tutti devono corrispondere affinché la richiesta possa essere elaborata.

  12. Seleziona Crea percorso.

AWS CLI

Per creare un percorso utilizzando ilAWS CLI.

Crea un percorso gRPC usando il seguente comando e inserisci JSON (sostituisci i valori rossi con i tuoi):

  1. aws appmesh create-route \ --cli-input-json file://create-route-grpc.json
  2. Contenuto dell'esempio 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. Output di esempio:

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

Per ulteriori informazioni sulla creazione di un percorso conAWS CLI for App Mesh, consulta il comando create-route nelAWS CLI riferimento.

(Facoltativo) Partita

  • (Facoltativo) Inserire il nome del servizio di destinazione per cui corrispondere alla richiesta. Se non specifichi un nome, le richieste a qualsiasi servizio corrispondono.

  • (Facoltativo) Inserire il nome del metodo di destinazione per il quale corrispondere alla richiesta. Se non specifichi un nome, le richieste a qualsiasi metodo corrispondono. Se si specifica un nome di metodo, è necessario specificare un nome di servizio.

(Facoltativo) Metadati

Seleziona Add metadata (Aggiungi metadati).

  • (Facoltativo) Inserisci il nome dei metadati in base al quale desideri indirizzare, seleziona un tipo di corrispondenza e inserisci un valore di corrispondenza. Selezionando Inverti si otterrà l'effetto opposto. Ad esempio, se specifichi un nome di metadati dimyMetadata, un tipo Match Exact, un valore Match di123 e selezioni Inverti, il percorso viene confrontato per ogni richiesta il cui nome di metadati inizia con qualcosa di diverso da123.

  • (Facoltativo) Seleziona Aggiungi metadati per aggiungere fino a dieci elementi di metadati.

(Facoltativo) Politica relativa ai tentativi

Una policy per i nuovi tentativi consente ai client di proteggersi da guasti di rete intermittenti o da guasti lato server intermittenti. Una policy per la ripetizione dei tentativi è facoltativa, ma è consigliata. I valori di timeout dei tentativi definiscono il timeout per tentativo di nuovo tentativo (incluso il tentativo iniziale). Se non definisci una politica per i nuovi tentativi, App Mesh può creare automaticamente una politica predefinita per ciascuno dei tuoi percorsi. Per ulteriori informazioni, consulta Politica predefinita per i nuovi tentativi di routing.

  • Per il timeout Riprova, inserisci il numero di unità per la durata del timeout. È necessario un valore se si seleziona un evento di nuovo tentativo del protocollo.

  • Per l'unità di timeout Retry, selezionare un'unità. È necessario un valore se si seleziona un evento di nuovo tentativo del protocollo.

  • Per Numero massimo di tentativi, inserisci il numero massimo di tentativi quando la richiesta ha esito negativo. È necessario un valore se si seleziona un evento di nuovo tentativo del protocollo. Consigliamo un valore minimo di due.

  • Seleziona uno o più eventi HTTP di nuovo tentativo. Si consiglia di selezionare almeno stream-error e gateway-error.

  • Seleziona un evento di nuovo tentativo TCP.

  • Seleziona uno o più eventi di riprova gRPC. Ti consigliamo di selezionare almeno le opzioni cancellate e non disponibili.

Timeout (facoltativo)

  • Il valore predefinito è 15 secondi. Se hai specificato un criterio Riprova, la durata specificata qui deve essere sempre maggiore o uguale alla durata dei tentativi moltiplicata per il numero massimo di tentativi che hai definito nel criterio Riprova in modo che il criterio dei tentativi possa essere completato. Se specifichi una durata superiore a 15 secondi, assicurati che anche il timeout specificato per il listener di qualsiasi nodo virtuale Target sia maggiore di 15 secondi. Per ulteriori informazioni, consulta Nodi virtuali.

  • Il valore di0 disabilita il timeout.

  • Il tempo massimo durante il quale il routing può rimanere inattivo.

(Facoltativo) Partita

  • Specifica il prefisso a cui deve corrispondere il percorso. Ad esempio, se il nome del servizio virtuale è service-b.local e desideri che la route corrisponda alle richieste in service-b.local/metrics, il prefisso deve essere /metrics. Specificare i/ percorsi di tutto il traffico.

  • (Facoltativo) Seleziona un metodo.

  • (Facoltativo) Seleziona uno schema. Applicabile solo per le route HTTP2.

Intestazioni (facoltative)

  • (Facoltativo) Seleziona Aggiungi intestazione. Inserisci il nome dell'intestazione in base al quale desideri indirizzare, seleziona un tipo di corrispondenza e inserisci un valore di corrispondenza. Selezionando Inverti si otterrà l'effetto opposto. Ad esempio, se si specifica un'intestazione denominataclientRequestId con il prefisso di123 e si seleziona Inverti, la rotta viene trovata per qualsiasi richiesta la cui intestazione inizia con un valore diverso da123.

  • (Facoltativo) Seleziona Aggiungi intestazione. È possibile aggiungere fino a dieci intestazioni.

(Facoltativo) Politica relativa ai tentativi

Una policy per i nuovi tentativi consente ai client di proteggersi da guasti di rete intermittenti o da guasti lato server intermittenti. Una policy per la ripetizione dei tentativi è facoltativa, ma è consigliata. I valori di timeout dei tentativi definiscono il timeout per tentativo di nuovo tentativo (incluso il tentativo iniziale). Se non definisci una politica per i nuovi tentativi, App Mesh può creare automaticamente una politica predefinita per ciascuno dei tuoi percorsi. Per ulteriori informazioni, consulta Politica predefinita per i nuovi tentativi di routing.

  • Per il timeout Riprova, inserisci il numero di unità per la durata del timeout. È necessario un valore se si seleziona un evento di nuovo tentativo del protocollo.

  • Per l'unità di timeout Retry, selezionare un'unità. È necessario un valore se si seleziona un evento di nuovo tentativo del protocollo.

  • Per Numero massimo di tentativi, inserisci il numero massimo di tentativi quando la richiesta ha esito negativo. È necessario un valore se si seleziona un evento di nuovo tentativo del protocollo. Consigliamo un valore minimo di due.

  • Seleziona uno o più eventi HTTP di nuovo tentativo. Si consiglia di selezionare almeno stream-error e gateway-error.

  • Seleziona un evento di nuovo tentativo TCP.

Timeout (facoltativo)

  • Timeout della richiesta: l'impostazione predefinita è 15 secondi. Se hai specificato un criterio Riprova, la durata specificata qui deve essere sempre maggiore o uguale alla durata dei tentativi moltiplicata per il numero massimo di tentativi che hai definito nel criterio Riprova in modo che il criterio dei tentativi possa essere completato.

  • Durata inattività: il valore predefinito è 300 secondi.

  • Il valore di0 disabilita il timeout.

Nota

Se specifichi un timeout maggiore di quello predefinito, assicurati che anche il timeout specificato per il listener per tutti i partecipanti al nodo virtuale sia maggiore di quello predefinito. Tuttavia, se riduci il timeout a un valore inferiore a quello predefinito, è facoltativo aggiornare i timeout nei nodi virtuali. Per ulteriori informazioni, consulta Nodi virtuali.

Timeout (facoltativo)

  • Durata inattività: il valore predefinito è 300 secondi.

  • Il valore di0 disabilita il timeout.

Eliminazione di un routing

AWS Management Console
Per eliminare una route mediante l'AWS Management Console
  1. Apri la console App Mesh all'indirizzo https://console.aws.amazon.com/appmesh/.

  2. Scegliere la mesh da cui si desidera eliminare un routing. Vengono elencate tutte le mesh che possiedi e che sono state condivise con te.

  3. Nel riquadro di navigazione sinistro, scegliere Virtual routers (Router virtuali).

  4. Scegliere il router da cui si desidera eliminare un routing.

  5. Nella tabella Percorsi, scegli il percorso che desideri eliminare e seleziona Elimina nell'angolo in alto a destra.

  6. Nella casella di conferma, digitadelete e fai clic su Elimina.

AWS CLI
Per eliminare una route mediante l'AWS CLI
  1. Usa il seguente comando per eliminare il tuo percorso (sostituisci i valori rossi con i tuoi):

    aws appmesh delete-route \ --mesh-name meshName \ --virtual-router-name routerName \ --route-name routeName
  2. Output di esempio:

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

Per ulteriori informazioni sull'eliminazione di un percorso conAWS CLI for App Mesh, consulta il comando delete-route nelAWS CLI riferimento.