Aturan perutean untuk menghubungkan tahapan API ke nama domain khusus untuk REST APIs - Amazon API Gateway

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:Worldakan 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

x-version: a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a

  • x-version: alpha

  • x-version: beta

  • x-version: account

  • x-version: backup

  • x-version: users

x-version: *a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a* dan x-version: *b*

  • x-version: backup

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: users

x-version: b* dan x-version: *a

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: users

x-version: *

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

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

Accept: *json

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Accept: *json*

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

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 PetStoreShopper/dogs

True

GET https://example.com/PetStoreShopper/dogs

API Gateway memanggil GET metode / sumber daya.

Jika jalur dasar berisiPetStoreShopper/dogs.

False

GET https://example.com/PetStoreShopper/dogs

API Gateway memanggil GET metode PetStoreShopper/dogs sumber daya.

Jika jalur dasar berisi PetStoreShopper

True

GET https://example.com/PetStoreShopper/dogs

API Gateway memanggil GET metode dogs sumber daya.

Jika jalur dasar berisi PetStoreShopper

False

GET https://example.com/PetStoreShopper/dogs

API Gateway memanggil GET metode PetStoreShopper/dogs sumber daya.

Jika jalur dasar berisi PetStoreShopper

True

GET https://example.com/PetStoreShopper?birds=available

API Gateway memanggil GET metode / sumber daya dengan parameter string kueribirds=available.

Jika jalur dasar berisi PetStoreShopper

False

GET https://example.com/PetStoreShopper?birds=available

API Gateway memanggil GET metode /PetStoreShopper sumber daya dengan parameter string kueribirds=available.

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-Z0-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 (/).