Memperbarui/memigrasi ke Utusan 1.17 - AWS App Mesh

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memperbarui/memigrasi ke Utusan 1.17

Secret Discovery Service dengan SPIRE

Jika Anda menggunakan SPIRE (SPIFFE Runtime Environment) dengan App Mesh untuk mendistribusikan sertifikat kepercayaan ke layanan Anda, verifikasi bahwa Anda menggunakan setidaknya versi 0.12.0 agen SPIRE (dirilis Desember 2020). Ini adalah versi pertama yang dapat mendukung versi Utusan setelahnya. 1.16

Perubahan ekspresi reguler

Mulai dari Envoy1.17, App Mesh mengonfigurasi Envoy untuk menggunakan mesin ekspresi reguler RE2 secara default. Perubahan ini terlihat jelas bagi sebagian besar pengguna, tetapi kecocokan di Rute atau Rute Gateway tidak lagi memungkinkan referensi lihat ke depan atau back-reference dalam ekspresi reguler.

Positif dan Negatif melihat ke depan

Positif - Pandangan positif ke depan adalah ekspresi tanda kurung yang dimulai dengan: ?=

(?=example)

Ini memiliki utilitas paling banyak saat melakukan penggantian string karena memungkinkan pencocokan string tanpa menggunakan karakter sebagai bagian dari pertandingan. Karena App Mesh tidak mendukung penggantian string regex, kami sarankan Anda menggantinya dengan kecocokan biasa.

(example)

Negatif - Pandangan negatif ke depan adalah ekspresi tanda kurung yang dimulai dengan. ?!

ex(?!amp)le

Ekspresi tanda kurung digunakan untuk menegaskan bahwa bagian dari ekspresi tidak cocok dengan input yang diberikan. Dalam kebanyakan kasus, Anda dapat mengganti ini dengan kuantifier nol.

ex(amp){0}le

Jika ekspresi itu sendiri adalah kelas karakter, Anda dapat meniadakan seluruh kelas dan menandainya opsional menggunakan?.

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

Tergantung pada kasus penggunaan Anda, Anda mungkin juga dapat mengubah rute Anda untuk menangani ini.

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

Pencocokan rute pertama mencari header yang dimulai dengan “awalan” tetapi tidak diikuti oleh “akhiran.” Rute kedua bertindak untuk mencocokkan semua header lain yang dimulai dengan “awalan,” termasuk yang diakhiri dengan “akhiran.” Sebaliknya, ini juga dapat dibalik sebagai cara untuk menghilangkan pandangan negatif ke depan.

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

Contoh ini membalikkan rute untuk memberikan prioritas yang lebih tinggi ke header yang diakhiri dengan “akhiran”, dan semua header lain yang dimulai dengan “awalan” dicocokkan di rute prioritas rendah.

Referensi belakang

Referensi balik adalah cara untuk menulis ekspresi yang lebih pendek dengan mengulangi ke grup bertanda kurung sebelumnya. Mereka memiliki bentuk ini.

(group1)(group2)\1

Sebuah garis miring terbalik \ diikuti oleh angka bertindak sebagai pengganti untuk kelompok tanda kurung ke-n dalam ekspresi. Dalam contoh ini, \1 digunakan sebagai cara alternatif untuk (group1) menulis kedua kalinya.

(group1)(group2)(group1)

Ini dapat dihapus hanya dengan mengganti referensi balik dengan grup yang direferensikan seperti pada contoh.