Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aturan perutean untuk menghubungkan tahapan API ke nama domain khusus untuk REST APIs
Aturan routing adalah serangkaian kondisi yang ketika dicocokkan, memanggil tindakan. Misalnya, aturan dapat merutekan permintaan masuk ke nama domain kustom yang berisi header Hello:World
dan berisi jalur dasar users
ke production
tahap REST API.
Aturan dievaluasi dalam urutan prioritas, dan jika Anda menyetel mode peruteanROUTING_RULE_THEN_API_MAPPING
, API Gateway selalu mengevaluasi semua aturan perutean sebelum mengevaluasi pemetaan API apa pun. Daftar berikut menjelaskan bagaimana aturan routing menggunakan kondisi, tindakan, dan prioritas.
- Ketentuan
-
Bila syarat untuk suatu peraturan terpenuhi, maka tindakannya dilakukan. API Gateway mendukung hingga dua kondisi header dan satu kondisi jalur. API Gateway mengevaluasi kondisi header dan kondisi jalur dasar secara bersamaan.
Anda dapat membuat aturan tanpa syarat apa pun. Saat API Gateway mengevaluasi aturan ini, tindakan selalu dilakukan. Anda dapat membuat aturan tanpa syarat apa pun sebagai aturan catch-all.
Untuk informasi selengkapnya tentang kondisi header, lihatKetentuan header pertandingan. Untuk informasi selengkapnya tentang kondisi jalur, lihatCocokkan kondisi jalur dasar.
- Tindakan
-
Tindakan adalah hasil dari kondisi pencocokan dengan aturan routing. Saat ini, satu-satunya tindakan yang didukung adalah memanggil tahap REST API.
Setiap aturan dapat memiliki satu tindakan.
- Prioritas
-
Prioritas menentukan urutan aturan yang dievaluasi, dari nilai terendah hingga nilai tertinggi. Aturan tidak dapat memiliki prioritas yang sama.
Anda dapat menetapkan prioritas dari 1-1.000.000. Jika aturan memiliki prioritas satu, API Gateway mengevaluasinya terlebih dahulu. Kami menyarankan bahwa ketika Anda membuat aturan, Anda menambahkan kesenjangan dalam prioritas. Ini membantu Anda mengubah prioritas aturan dan menambahkan aturan baru. Untuk informasi selengkapnya, lihat Ubah prioritas aturan routing.
Untuk contoh cara API Gateway mengevaluasi aturan perutean, lihat. Contoh bagaimana API Gateway mengevaluasi aturan perutean
Jenis kondisi aturan perutean API Gateway
Bagian berikut menjelaskan jenis kondisi aturan routing. API Gateway hanya cocok dengan aturan jika semua kondisi benar.
Ketentuan header pertandingan
Saat Anda membuat kondisi header, Anda dapat mencocokkan nama header dan nilai glob header, sepertiHello:World
. API Gateway menggunakan kecocokan literal untuk memvalidasi kondisi header kecocokan. Kondisi Anda dapat menggunakan hingga dua header yang digunakan di AND
antara mereka. Misalnya, kondisi Anda dapat cocok jika permintaan masuk berisi Hello:World
danx-version:beta
.
Pencocokan nama header tidak peka huruf besar/kecil, tetapi nilai glob header peka huruf besar/kecil. Hello:World
akan cocokhello:World
, tapi tidakHello:world
.
Untuk daftar nilai header terbatas lihat,Pembatasan.
Menggunakan wildcard dengan kondisi header
Anda hanya dapat menggunakan wildcard dalam nilai header glob, dan wildcard harus*prefix-match
,, suffix-match*
atau. *contains*
Tabel berikut menunjukkan contoh cara menggunakan wildcard untuk pencocokan kondisi header.
Kondisi header | Permintaan yang cocok dengan aturan perutean | Permintaan yang tidak cocok dengan aturan perutean |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tidak ada |
Jika Anda membuat kondisi untuk beberapa nilai header, sepertiAccept:application/json,text/xml
, kami sarankan Anda menggunakan *contains*
untuk kondisi header Anda dan menghindari membuat kondisi menggunakan karakter koma (,
).
Karena API Gateway cocok dengan kondisi header secara harfiah, kecocokan semantik mungkin dirutekan secara berbeda. Tabel berikut menunjukkan perbedaan dalam hasil aturan routing.
Kondisi header | Permintaan yang cocok dengan aturan perutean | Permintaan yang tidak cocok dengan aturan perutean |
---|---|---|
|
|
|
|
|
Tidak ada |
Cocokkan kondisi jalur dasar
Saat Anda membuat kondisi jalur dasar, jika permintaan masuk berisi jalur yang Anda tentukan, aturannya cocok. Pencocokannya peka huruf besar/kecil, jadi jalurnya tidak New/Users
akan cocoknew/users
.
Anda dapat membuat kondisi jalur dasar hanya untuk satu jalur dasar.
Untuk daftar kondisi jalur dasar terbatas,Pembatasan.
Lepaskan jalur dasar dengan kondisi jalur dasar
Saat Anda membuat kondisi jalur mandi, Anda dapat memilih untuk melucuti jalur dasar. Saat Anda menghapus jalur dasar, API Gateway menghapus jalur dasar yang cocok yang masuk saat memanggil API target. Ini adalah perilaku yang sama seperti ketika Anda menggunakan pemetaan API. Jika Anda tidak menghapus jalur dasar, API Gateway meneruskan seluruh jalur dasar ke API target. Sebaiknya Anda hanya menghapus jalur dasar saat membuat ulang pemetaan API.
Tabel berikut menunjukkan contoh bagaimana API Gateway mengevaluasi kondisi jalur dasar strip.
Ketentuan | Jalur dasar strip | Permintaan masuk | Hasil |
---|---|---|---|
Jika jalur dasar berisi |
True |
|
API Gateway memanggil |
Jika jalur dasar berisi |
False |
|
API Gateway memanggil |
Jika jalur dasar berisi |
True |
|
API Gateway memanggil |
Jika jalur dasar berisi |
False |
|
API Gateway memanggil |
Jika jalur dasar berisi |
True |
|
API Gateway memanggil |
Jika jalur dasar berisi |
False |
|
API Gateway memanggil |
Pembatasan
-
API target dan nama domain khusus harus berada di AWS akun yang sama.
Setiap aturan dapat memiliki satu API target.
-
Anda hanya dapat membuat aturan perutean untuk nama domain kustom pribadi ke API pribadi, dan untuk nama domain kustom publik ke API publik. Anda tidak dapat mencampur sumber daya publik dan swasta.
-
Jika nama domain kustom Anda memiliki pemetaan API ke REST dan HTTP APIs, aturan perutean tidak didukung.
Jumlah prioritas maksimum adalah 1.000.000.
-
Pembatasan header:
Setiap
anyOf
kondisi hanya dapat berisi satu nilai header.-
Satu-satunya karakter yang diizinkan untuk nama header dan nilai glob header ditentukan oleh RFC 7230
, yaitu, a-z
,A-Z
0-9
, dan karakter khusus berikut:.*?-!#$%&'.^_`|~
-
Anda dapat menggunakan wildcard dalam nilai header glob, tetapi wildcard harus
*prefix-match
,,suffix-match*
atau.*contains*
Anda tidak dapat menggunakan*
di tengah nilai glob header. Nama header wildcard tidak didukung.
Nama header harus kurang dari 40 karakter.
Nilai header glob harus kurang dari 128 karakter.
Nilai header glob untuk kecocokan infix harus kurang dari 40 karakter.
Header berikut tidak didukung sebagai kondisi:
access-control-*
apigw-*
Authorization
Connection
Content-Encoding
Content-Length
Content-Location
Forwarded
Keep-Alive
Origin
Proxy-Authenticate
Proxy-Authorization
TE
Trailers
Transfer-Encoding
Upgrade
x-amz-*
x-amzn-*
X-Forwarded-For
X-Forwarded-Host
X-Forwarded-Proto
Via
-
Batasan jalur dasar:
Panjang jalur dasar harus kurang dari 128 karakter.
-
Jalur dasar harus berisi hanya huruf, angka, dan karakter berikut:
$-_.+!*'()/
. Jalur dasar tidak dapat memulai atau mengakhiri dengan karakter garis miring terbalik (
/
).