Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Di WebSocket API Anda, pesan JSON yang masuk diarahkan ke integrasi backend berdasarkan rute yang Anda konfigurasikan. (Pesan non-JSON 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 tingkat API. Ini menentukan properti JSON yang diharapkan hadir dalam payload pesan. Untuk informasi selengkapnya tentang ekspresi pemilihan rute, lihatEkspresi pemilihan rute.
Misalnya, jika pesan JSON 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.
-
API Gateway memanggil
$connect
rute saat koneksi persisten antara klien dan WebSocket API sedang dimulai. -
API Gateway memanggil
$disconnect
rute saat klien atau server terputus dari API. -
API Gateway memanggil rute kustom setelah ekspresi pemilihan rute dievaluasi terhadap pesan jika rute yang cocok ditemukan; kecocokan menentukan integrasi mana yang dipanggil.
-
API Gateway memanggil
$default
rute jika ekspresi pemilihan rute tidak dapat dievaluasi terhadap pesan atau jika tidak ditemukan rute yang cocok.
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 berbasis APIs, ekspresi harus dari bentuk$request.body.
.{path_to_body_element}
Misalnya, Anda mengirim pesan JSON berikut:
{ "service" : "chat", "action" : "join", "data" : { "room" : "room1234" } }
Anda mungkin ingin memilih perilaku API berdasarkan action
properti. Dalam hal ini, Anda dapat menentukan ekspresi pemilihan rute berikut:
$request.body.action
Dalam contoh ini, request.body
mengacu pada payload JSON 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 ditemukan rute yang cocok, API Gateway mencoba menemukan $default
rute jika tersedia. Jika $default
rute tidak ditentukan, maka API Gateway mengembalikan kesalahan.
Mengatur rute untuk WebSocket API di API Gateway
Saat pertama kali membuat WebSocket API baru, 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 CLI, Anda dapat membuat rute sebelum atau setelah Anda membuat integrasi, dan Anda dapat menggunakan kembali integrasi yang sama untuk beberapa rute.
Membuat rute menggunakan konsol API Gateway
Untuk membuat rute menggunakan konsol API Gateway
-
Masuk ke konsol API Gateway, pilih API, 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 sebelumnya.-
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
Perintah create-route berikut membuat rute:
aws apigatewayv2 --region us-east-1 create-route --api-id aabbccddee --route-key $default
Outputnya akan terlihat seperti berikut:
{ "ApiKeyRequired": false, "AuthorizationType": "NONE", "RouteKey": "$default", "RouteId": "1122334" }
Tentukan pengaturan permintaan rute untuk $connect
Saat Anda menyiapkan $connect
rute untuk API Anda, pengaturan opsional berikut tersedia untuk mengaktifkan otorisasi API Anda. Untuk informasi selengkapnya, lihat $connectRute.
-
Otorisasi: Jika tidak diperlukan otorisasi, Anda dapat menentukan.
NONE
Jika tidak, Anda dapat menentukan:-
AWS_IAM
untuk menggunakan kebijakan AWS IAM standar untuk mengontrol akses ke API Anda. -
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 seluruh API, bukan hanya
$connect
rute.$connect
Rute melindungi rute lain, karena dipanggil pada setiap koneksi. -
-
Kunci API diperlukan: Anda dapat secara opsional meminta kunci API untuk
$connect
rute API. Anda dapat menggunakan kunci API bersama dengan rencana penggunaan untuk mengontrol dan melacak akses ke Anda APIs. Untuk informasi selengkapnya, lihat Paket penggunaan dan kunci API untuk REST APIs di API Gateway.
Siapkan permintaan $connect
rute menggunakan konsol API Gateway
Untuk menyiapkan permintaan $connect
rute WebSocket API menggunakan konsol API Gateway:
-
Masuk ke konsol API Gateway, pilih API, dan pilih Rute.
-
Di bawah Rute
$connect
, pilih, atau buat$connect
rute dengan mengikutiMembuat rute menggunakan konsol API Gateway. Di bagian Pengaturan permintaan rute, pilih Edit.
Untuk Otorisasi, pilih jenis otorisasi.
Untuk mewajibkan API untuk
$connect
rute tersebut, pilih Memerlukan kunci API.Pilih Simpan perubahan.