Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat rute untuk WebSocket APIs di API Gateway
Dalam JSON pesan masuk Anda WebSocket API diarahkan ke integrasi backend berdasarkan rute yang Anda konfigurasikan. (JSONNon-pesan diarahkan ke $default
rute yang Anda konfigurasikan.)
Rute menyertakan kunci rute, yang merupakan nilai yang diharapkan setelah ekspresi pemilihan rute dievaluasi. routeSelectionExpression
Ini adalah atribut yang didefinisikan pada API tingkat. Ini menentukan JSON properti yang diharapkan hadir dalam payload pesan. Untuk informasi selengkapnya tentang ekspresi pemilihan rute, lihatEkspresi pemilihan rute.
Misalnya, jika JSON pesan Anda berisi action
properti dan Anda ingin melakukan tindakan berbeda berdasarkan properti ini, ekspresi pemilihan rute Anda mungkin${request.body.action}
. Tabel routing Anda akan menentukan tindakan mana yang akan dilakukan dengan mencocokkan nilai action
properti terhadap nilai kunci rute kustom yang telah Anda tentukan dalam tabel.
Ada tiga rute standar yang dapat digunakan:$connect
,$disconnect
, dan$default
. Selain itu, Anda dapat membuat rute khusus.
-
APIGateway memanggil
$connect
rute ketika koneksi persisten antara klien dan a WebSocket API sedang dimulai. -
APIGateway memanggil
$disconnect
rute ketika klien atau server terputus dari. API -
APIGateway memanggil rute kustom setelah ekspresi pemilihan rute dievaluasi terhadap pesan jika rute yang cocok ditemukan; kecocokan menentukan integrasi mana yang dipanggil.
-
APIGateway memanggil
$default
rute jika ekspresi pemilihan rute tidak dapat dievaluasi terhadap pesan atau jika tidak ada rute yang cocok ditemukan.
Ekspresi pemilihan rute
Ekspresi pemilihan rute dievaluasi saat layanan memilih rute yang akan diikuti untuk pesan masuk. Layanan menggunakan rute yang routeKey
persis sama dengan nilai yang dievaluasi. Jika tidak ada yang cocok dan rute dengan kunci $default
rute ada, rute itu dipilih. Jika tidak ada rute yang cocok dengan nilai yang dievaluasi dan tidak ada $default
rute, layanan mengembalikan kesalahan. Untuk WebSocket berbasisAPIs, ekspresi harus dari bentuk$request.body.
.{path_to_body_element}
Misalnya, Anda mengirim JSON pesan berikut:
{ "service" : "chat", "action" : "join", "data" : { "room" : "room1234" } }
Anda mungkin ingin memilih API perilaku Anda berdasarkan action
properti. Dalam hal ini, Anda dapat menentukan ekspresi pemilihan rute berikut:
$request.body.action
Dalam contoh ini, request.body
mengacu pada JSON payload pesan Anda, dan .action
merupakan JSONPathrequest.body
, tetapi perlu diingat bahwa hasilnya akan dirangkai. Misalnya, jika JSONPath ekspresi Anda mengembalikan array dari dua elemen, yang akan disajikan sebagai string"[item1, item2]"
. Untuk alasan ini, ini adalah praktik yang baik untuk membuat ekspresi Anda mengevaluasi nilai dan bukan array atau objek.
Anda cukup menggunakan nilai statis, atau Anda dapat menggunakan beberapa variabel. Tabel berikut menunjukkan contoh dan hasil evaluasi mereka terhadap muatan sebelumnya.
Ekspresi | Hasil yang dievaluasi | Deskripsi |
---|---|---|
$request.body.action |
join |
Variabel yang tidak dibungkus |
${request.body.action} |
join |
Variabel yang dibungkus |
${request.body.service}/${request.body.action} |
chat /join |
Beberapa variabel dengan nilai statis |
${request.body.action}-${request.body.invalidPath}
|
join- |
Jika JSONPath tidak ditemukan, variabel diselesaikan sebagai “”. |
action |
action |
Nilai statis |
\$default |
$default |
Nilai statis |
Hasil evaluasi digunakan untuk menemukan rute. Jika ada rute dengan kunci rute yang cocok, rute dipilih untuk memproses pesan. Jika tidak ada rute yang cocok ditemukan, maka API Gateway mencoba menemukan $default
rute jika tersedia. Jika $default
rute tidak ditentukan, maka API Gateway mengembalikan kesalahan.
Siapkan rute untuk WebSocket API di API Gateway
Saat pertama kali membuat yang baru WebSocket API, ada tiga rute yang telah ditentukan:$connect
,$disconnect
, dan$default
. Anda dapat membuatnya dengan menggunakan konsol,API, atau AWS CLI. Jika diinginkan, Anda dapat membuat rute khusus. Untuk informasi selengkapnya, lihat Ikhtisar WebSocket APIs di API Gateway.
catatan
Di dalamCLI, Anda dapat membuat rute sebelum atau setelah Anda membuat integrasi, dan Anda dapat menggunakan kembali integrasi yang sama untuk beberapa rute.
Buat rute menggunakan konsol API Gateway
Untuk membuat rute menggunakan konsol API Gateway
-
Masuk ke konsol API Gateway, pilihAPI, dan pilih Rute.
Pilih Buat rute
Untuk tombol Rute, masukkan nama kunci rute. Anda dapat membuat rute yang telah ditentukan (
$connect
,$disconnect
, dan$default
), atau rute khusus.catatan
Saat Anda membuat rute khusus, jangan gunakan
$
awalan dalam nama kunci rute. Awalan ini dicadangkan untuk rute yang telah ditentukan.-
Pilih dan konfigurasikan jenis integrasi untuk rute. Untuk informasi selengkapnya, lihat Menyiapkan permintaan integrasi WebSocket API menggunakan konsol API Gateway.
Buat rute menggunakan AWS CLI
Untuk membuat rute menggunakan AWS CLI, panggil create-route
seperti yang ditunjukkan pada contoh berikut:
aws apigatewayv2 --region us-east-1 create-route --api-id aabbccddee --route-key $default
Contoh output:
{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteKey": "$default", "RouteId": "1122334" }
Tentukan pengaturan permintaan rute untuk $connect
Ketika Anda mengatur $connect
rute untuk AndaAPI, pengaturan opsional berikut tersedia untuk mengaktifkan otorisasi untuk AndaAPI. Untuk informasi selengkapnya, lihat $connectRute.
-
Otorisasi: Jika tidak diperlukan otorisasi, Anda dapat menentukan.
NONE
Jika tidak, Anda dapat menentukan:-
AWS_IAM
untuk menggunakan AWS IAM kebijakan standar untuk mengontrol akses ke AndaAPI. -
CUSTOM
untuk menerapkan otorisasi untuk API dengan menentukan fungsi otorisasi Lambda yang telah Anda buat sebelumnya. Authorizer dapat berada di akun Anda sendiri atau AWS akun lain AWS . Untuk informasi selengkapnya tentang otorisasi Lambda, lihat. Gunakan otorisasi API Gateway Lambdacatatan
Di konsol API Gateway,
CUSTOM
pengaturan hanya terlihat setelah Anda menyiapkan fungsi otorisasi seperti yang dijelaskan dalamKonfigurasikan otorisasi Lambda (konsol).
penting
Pengaturan Otorisasi diterapkan ke seluruhAPI, bukan hanya
$connect
rute.$connect
Rute melindungi rute lain, karena dipanggil pada setiap koneksi. -
-
APIKey Required: Anda dapat secara opsional meminta API kunci untuk
$connect
rute. API Anda dapat menggunakan API kunci bersama dengan rencana penggunaan untuk mengontrol dan melacak akses ke AndaAPIs. Untuk informasi selengkapnya, lihat Paket penggunaan dan API kunci untuk REST APIs di API Gateway .
Siapkan permintaan $connect
rute menggunakan konsol API Gateway
Untuk menyiapkan permintaan $connect
rute untuk WebSocket API menggunakan konsol API Gateway:
-
Masuk ke konsol API Gateway, pilihAPI, dan pilih Rute.
-
Di bawah Rute
$connect
, pilih, atau buat$connect
rute dengan mengikutiBuat rute menggunakan konsol API Gateway. Di bagian Pengaturan permintaan rute, pilih Edit.
Untuk Otorisasi, pilih jenis otorisasi.
Untuk mewajibkan API
$connect
rute, pilih Memerlukan API kunci.Pilih Simpan perubahan.