Mise à jour/migration 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.

Mise à jour/migration vers Envoy 1.17

Service de découverte secrète 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 suivantes d'Envoy1.16.

Modifications des 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. Ce changement est évident pour la plupart des utilisateurs, mais les correspondances dans Routes ou Gateway Routes n'autorisent plus les références anticipées ou rétrospectives dans les expressions régulières.

Perspectives positives et négatives

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

(?=example)

Ils sont particulièrement utiles lors du remplacement de chaînes, car ils permettent de faire correspondre une chaîne sans consommer les caractères nécessaires à la correspondance. App Mesh ne prenant pas en charge le remplacement de 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 la classe entière 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 de route recherche un en-tête commençant par « préfixe » mais non suivi d'un « suffixe ». La deuxième route fait correspondre tous les autres en-têtes commençant par « préfixe », y compris ceux qui se terminent par « suffixe ». Au lieu de cela, ils peuvent également être inversés 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 accorder 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 rétrospectives

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

(group1)(group2)\1

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

(group1)(group2)(group1)

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