View a markdown version of this page

Updating/migrating vers Envoy 1.17 - AWS App Mesh

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.

Updating/migrating vers Envoy 1.17

Important

Avis de fin de support : le 30 septembre 2026, AWS le support pour 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 Migration depuis Amazon ECS Service Connect AWS App Mesh vers Amazon ECS.

Service de découverte secret avec SPIRE

Si vous utilisez SPIRE (SPIFFE Runtime Environment) avec App Mesh pour distribuer des certificats de confiance à vos services, vérifiez que vous utilisez au moins une version 0.12.0 de l'agent SPIRE (publiée en décembre 2020). Il s'agit de la première version qui peut prendre en charge les versions d'Envoy par la suite1.16.

Changements d'expressions régulières

À partir d'Envoy1.17, App Mesh configure Envoy pour qu'il utilise le moteur d'expressions régulières RE2 par défaut. Cette modification est évidente pour la plupart des utilisateurs, mais les correspondances dans Routes ou Gateway Routes ne permettent plus de faire des références anticipées ou rétrospectives dans les expressions régulières.

Perspectives d'avenir positives et négatives

Positif - Une prévision positive est une expression entre parenthèses qui commence par : ?=

(?=example)

Ils sont les plus utiles lors du remplacement de chaînes car ils permettent de faire correspondre une chaîne sans consommer les caractères dans le cadre de la correspondance. Comme App Mesh ne prend pas en charge le remplacement des chaînes regex, nous vous recommandons de les remplacer par des correspondances régulières.

(example)

Négatif - Une prévision négative est une expression entre parenthèses qui commence par. ?!

ex(?!amp)le

Les expressions entre parenthèses sont utilisées pour affirmer qu'une partie de l'expression ne correspond pas à une entrée donnée. Dans la plupart des cas, vous pouvez les remplacer par un quantificateur nul.

ex(amp){0}le

Si l'expression elle-même est une classe de caractères, vous pouvez annuler l'ensemble de la classe et la marquer comme facultative en utilisant?.

prefix(?![0-9])suffix => prefix[^0-9]?suffix

En fonction de votre cas d'utilisation, vous pourrez peut-être également modifier vos itinéraires pour gérer cela.

{ "routeSpec": { "priority": 0, "httpRoute": { "match": { "headers": [ { "name": "x-my-example-header", "match": { "regex": "^prefix(?!suffix)" } } ] } } } } { "routeSpec": { "priority": 1, "httpRoute": { "match": { "headers": [ { "name": "x-my-example-header", "match": { "regex": "^prefix" } } ] } } } }

La première correspondance d'itinéraire recherche un en-tête commençant par « préfixe » mais non suivi d'un « suffixe ». La deuxième route agit de manière à faire correspondre tous les autres en-têtes commençant par « préfixe », y compris ceux qui se terminent par « suffixe ». Au lieu de cela, elles peuvent également être inversées afin de supprimer les prévisions négatives.

{ "routeSpec": { "priority": 0, "httpRoute": { "match": { "headers": [ { "name": "x-my-example-header", "match": { "regex": "^prefix.*?suffix" } } ] } } } } { "routeSpec": { "priority": 1, "httpRoute": { "match": { "headers": [ { "name": "x-my-example-header", "match": { "regex": "^prefix" } } ] } } } }

Cet exemple inverse les itinéraires pour donner une priorité plus élevée aux en-têtes qui se terminent par « suffixe », et tous les autres en-têtes commençant par « préfixe » sont mis en correspondance dans l'itinéraire de priorité inférieure.

Références antérieures

Une référence arrière est un moyen d'écrire des expressions plus courtes en les répétant à un groupe précédent entre parenthèses. Ils ont ce formulaire.

(group1)(group2)\1

Une barre oblique inverse \ suivie d'un nombre sert d'espace réservé pour le n-ième groupe entre parenthèses de l'expression. Dans cet exemple, \1 est utilisé comme méthode alternative pour écrire (group1) une deuxième fois.

(group1)(group2)(group1)

Ceux-ci peuvent être supprimés en remplaçant simplement la référence arrière par le groupe référencé, comme dans l'exemple.