Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Tutorial: Buat WebSocket API dengan AWS integrasi

Mode fokus
Tutorial: Buat WebSocket API dengan AWS integrasi - Amazon API Gateway

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

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

Dalam tutorial ini, Anda membuat aplikasi siaran tanpa server dengan file. WebSocket API Klien dapat menerima pesan tanpa harus melakukan polling untuk pembaruan.

Tutorial ini menunjukkan cara menyiarkan pesan ke klien yang terhubung dan menyertakan contoh otorisasi Lambda, integrasi tiruan, dan integrasi non-proxy ke Step Functions.

Ikhtisar arsitektur dari API yang Anda buat dalam tutorial ini.

Setelah membuat sumber daya menggunakan AWS CloudFormation templat, Anda akan menggunakan konsol API Gateway untuk membuat WebSocket API yang terintegrasi dengan AWS sumber daya Anda. Anda akan melampirkan otorisasi Lambda ke Anda API dan membuat integrasi AWS layanan dengan Step Functions untuk memulai eksekusi mesin status. Mesin status Step Functions akan memanggil fungsi Lambda yang mengirim pesan ke semua klien yang terhubung.

Setelah Anda membangunAPI, Anda akan menguji koneksi Anda ke Anda API dan memverifikasi bahwa pesan dikirim dan diterima. Tutorial ini membutuhkan waktu sekitar 45 menit untuk menyelesaikannya.

Prasyarat

Anda membutuhkan prasyarat berikut:

Kami menyarankan Anda menyelesaikan tutorial aplikasi WebSocket obrolan sebelum memulai tutorial ini. Untuk menyelesaikan tutorial aplikasi WebSocket obrolan, lihatTutorial: Buat aplikasi WebSocket obrolan dengan WebSocket API, Lambda dan DynamoDB.

Langkah 1: Buat sumber daya

Unduh dan unzip template pembuatan aplikasi untuk AWS CloudFormation. Anda akan menggunakan template ini untuk membuat yang berikut:

  • Fungsi Lambda yang menangani API permintaan dan mengotorisasi akses ke Anda. API

  • Tabel DynamoDB untuk menyimpan IDs klien dan identifikasi pengguna utama yang dikembalikan oleh otorisasi Lambda.

  • Mesin status Step Functions untuk mengirim pesan ke klien yang terhubung.

Untuk membuat AWS CloudFormation tumpukan
  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pilih Buat tumpukan kemudian pilih Dengan sumber daya baru (standar).

  3. Untuk Tentukan templat, pilih Unggah file templat.

  4. Pilih template yang Anda unduh.

  5. Pilih Selanjutnya.

  6. Untuk nama Stack, masukkan websocket-step-functions-tutorial dan kemudian pilih Berikutnya.

  7. Untuk opsi Konfigurasi tumpukan, pilih Berikutnya.

  8. Untuk Kemampuan, akui bahwa AWS CloudFormation dapat membuat IAM sumber daya di akun Anda.

  9. Pilih Kirim.

AWS CloudFormation ketentuan sumber daya yang ditentukan dalam template. Diperlukan beberapa menit untuk menyelesaikan penyediaan sumber daya Anda. Pilih tab Output untuk melihat sumber daya yang Anda buat dan merekaARNs. Ketika status AWS CloudFormation tumpukan Anda adalah CREATE_ COMPLETE, Anda siap untuk melanjutkan ke langkah berikutnya.

Langkah 2: Buat WebSocket API

Anda akan membuat WebSocket API untuk menangani koneksi klien dan merutekan permintaan ke sumber daya yang Anda buat di Langkah 1.

Untuk membuat WebSocket API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih Buat API. Kemudian untuk WebSocket API, pilih Build.

  3. Untuk APInama, masukkanwebsocket-step-functions-tutorial.

  4. Untuk ekspresi pemilihan Rute, masukkanrequest.body.action.

    Ekspresi pemilihan rute menentukan rute yang API dipanggil Gateway saat klien mengirim pesan.

  5. Pilih Selanjutnya.

  6. Untuk rute Predefined, pilih Add $connect, Add $disconnect, Add $default.

    Rute $connect dan $disconnect adalah rute khusus yang dipanggil API Gateway secara otomatis saat klien terhubung atau terputus dari file. API APIGateway memanggil rute $default ketika tidak ada rute lain yang cocok dengan permintaan. Anda akan membuat rute khusus untuk terhubung ke Step Functions setelah Anda membuatAPI.

  7. Pilih Selanjutnya.

  8. Untuk Integrasi untuk $connect, lakukan hal berikut:

    1. Untuk jenis Integrasi, pilih Lambda.

    2. Untuk fungsi Lambda, pilih fungsi Lambda $connect yang sesuai yang Anda buat AWS CloudFormation di Langkah 1. Nama fungsi Lambda harus dimulai dengan. websocket-step

  9. Untuk Integrasi untuk $disconnect, lakukan hal berikut:

    1. Untuk jenis Integrasi, pilih Lambda.

    2. Untuk fungsi Lambda, pilih fungsi Lambda $disconnect yang sesuai yang Anda buat di Langkah 1. AWS CloudFormation Nama fungsi Lambda harus dimulai dengan. websocket-step

  10. Untuk Integrasi untuk $ default, pilih mock.

    Dalam integrasi tiruan, API Gateway mengelola respons rute tanpa backend integrasi.

  11. Pilih Selanjutnya.

  12. Tinjau tahap yang dibuat API Gateway untuk Anda. Secara default, API Gateway membuat tahap bernama produksi dan secara otomatis menyebarkan Anda API ke tahap itu. Pilih Selanjutnya.

  13. Pilih Buat dan terapkan.

Langkah 3: Buat Authorizer Lambda

Untuk mengontrol akses ke Anda WebSocket API, Anda membuat otorisasi Lambda. AWS CloudFormation Template membuat fungsi Lambda Authorizer untuk Anda. Anda dapat melihat fungsi Lambda di konsol Lambda. Nama harus dimulai denganwebsocket-step-functions-tutorial-AuthorizerHandler. Fungsi Lambda ini menolak semua panggilan ke WebSocket API kecuali headernya. Authorization Allow Fungsi Lambda juga meneruskan $context.authorizer.principalId variabel ke AndaAPI, yang kemudian digunakan dalam tabel DynamoDB untuk mengidentifikasi penelepon. API

Pada langkah ini, Anda mengonfigurasi rute $connect untuk menggunakan Lambda Authorizer.

Untuk membuat otorisasi Lambda
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Di panel navigasi utama, pilih Authorizers.

  3. Pilih Buat Authorizer.

  4. Untuk nama Authorizer, masukkanLambdaAuthorizer.

  5. Untuk Authorizer ARN, masukkan nama otorisasi yang dibuat oleh template. AWS CloudFormation Nama harus dimulai denganwebsocket-step-functions-tutorial-AuthorizerHandler.

    catatan

    Kami menyarankan Anda untuk tidak menggunakan contoh otorisasi ini untuk produksi APIs Anda.

  6. Untuk tipe sumber Identity, pilih Header. Untuk Kunci, masukkan Authorization.

  7. Pilih Buat Authorizer.

Setelah Anda membuat authorizer Anda, Anda melampirkannya ke rute $connect Anda. API

Untuk melampirkan otorisasi ke rute $connect
  1. Di panel navigasi utama, pilih Rute.

  2. Pilih rute $connect.

  3. Di bagian Pengaturan permintaan rute, pilih Edit.

  4. Untuk Otorisasi, pilih menu tarik-turun, lalu pilih otorisasi permintaan Anda.

  5. Pilih Simpan perubahan.

Langkah 4: Buat integrasi dua arah tiruan

Selanjutnya, Anda membuat integrasi tiruan dua arah untuk rute $default. Integrasi tiruan memungkinkan Anda mengirim respons ke klien tanpa menggunakan backend. Saat Anda membuat integrasi untuk rute $default, Anda dapat menunjukkan kepada klien cara berinteraksi dengan AndaAPI.

Anda mengonfigurasi rute $default untuk menginformasikan klien agar menggunakan rute sendmessage.

Untuk membuat integrasi tiruan
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih rute $ default, lalu pilih tab Permintaan integrasi.

  3. Untuk templat Permintaan, pilih Edit.

  4. Untuk ekspresi pemilihan Template, masukkan200, lalu pilih Edit.

  5. Pada tab Permintaan integrasi, untuk templat Permintaan, pilih Buat templat.

  6. Untuk kunci Template, masukkan200.

  7. Untuk menghasilkan template, masukkan template pemetaan berikut:

    {"statusCode": 200}

    Pilih Buat templat.

    Hasilnya akan terlihat seperti berikut ini:

    Konfigurasi permintaan integrasi untuk integrasi tiruan untuk rute $default.
  8. Pada panel rute $default, pilih Aktifkan komunikasi dua arah.

  9. Pilih tab Integration response, lalu pilih Create Integration Response.

  10. Untuk tombol Respons, masukkan$default.

  11. Untuk ekspresi pemilihan Template, masukkan200.

  12. Pilih Buat respons.

  13. Di bawah Templat respons, pilih Buat templat.

  14. Untuk kunci Template, masukkan200.

  15. Untuk template Response, masukkan template pemetaan berikut:

    {"Use the sendmessage route to send a message. Connection ID: $context.connectionId"}
  16. Pilih Buat templat.

    Hasilnya akan terlihat seperti berikut ini:

    Konfigurasi respons integrasi untuk integrasi tiruan untuk rute $default.

Langkah 5: Buat integrasi non-proxy dengan Step Functions

Selanjutnya, Anda membuat rute sendmessage. Klien dapat memanggil rute sendmessage untuk menyiarkan pesan ke semua klien yang terhubung. Rute sendmessage memiliki integrasi AWS layanan non-proxy dengan. AWS Step Functions Integrasi memanggil StartExecutionperintah untuk mesin status Step Functions yang dibuat AWS CloudFormation template untuk Anda.

Untuk membuat integrasi non-proxy
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih Buat rute.

  3. Untuk kunci Rute, masukkansendmessage.

  4. Untuk jenis Integrasi, pilih AWS layanan.

  5. Untuk AWS Wilayah, masukkan Wilayah tempat Anda menerapkan AWS CloudFormation template Anda.

  6. Untuk AWS layanan, pilih Step Functions.

  7. Untuk HTTPmetode, pilih POST.

  8. Untuk nama Action, masukkanStartExecution.

  9. Untuk peran Eksekusi, masukkan peran eksekusi yang dibuat oleh AWS CloudFormation template. Namanya seharusnya WebsocketTutorialApiRole.

  10. Pilih Buat rute.

Selanjutnya, Anda membuat template pemetaan untuk mengirim parameter permintaan ke mesin status Step Functions.

Untuk membuat template pemetaan
  1. Pilih rute sendmessage, lalu pilih tab Permintaan integrasi.

  2. Di bagian Permintaan template, pilih Edit.

  3. Untuk ekspresi pemilihan Template, masukkan\$default.

  4. Pilih Edit.

  5. Di bagian Permintaan template, pilih Buat template.

  6. Untuk kunci Template, masukkan\$default.

  7. Untuk menghasilkan template, masukkan template pemetaan berikut:

    #set($domain = "$context.domainName") #set($stage = "$context.stage") #set($body = $input.json('$')) #set($getMessage = $util.parseJson($body)) #set($mymessage = $getMessage.message) { "input": "{\"domain\": \"$domain\", \"stage\": \"$stage\", \"message\": \"$mymessage\"}", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:WebSocket-Tutorial-StateMachine" }

    Ganti stateMachineArn dengan mesin ARN negara yang dibuat oleh AWS CloudFormation.

    Template pemetaan melakukan hal berikut:

    • Menciptakan variabel $domain menggunakan variabel konteksdomainName.

    • Menciptakan variabel $stage menggunakan variabel konteksstage.

      $stageVariabel $domain dan diperlukan untuk membangun callbackURL.

    • Mengambil sendmessage JSON pesan masuk, dan mengekstrak message properti.

    • Menciptakan input untuk mesin negara. Input adalah domain dan tahap WebSocket API dan pesan dari sendmessage rute.

  8. Pilih Buat templat.

    konfigurasi rute sendmessage.

Anda dapat membuat integrasi non-proxy pada rute $connect atau $disconnect, untuk langsung menambahkan atau menghapus ID koneksi dari tabel DynamoDB, tanpa menjalankan fungsi Lambda.

Langkah 6: Uji API

Selanjutnya, Anda akan menerapkan dan menguji Anda API untuk memastikan bahwa itu berfungsi dengan benar. Anda akan menggunakan wscat perintah untuk terhubung ke API dan kemudian, Anda akan menggunakan perintah garis miring untuk mengirim bingkai ping untuk memeriksa koneksi ke WebSocket API.

Untuk menyebarkan API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Di panel navigasi utama, pilih Rute.

  3. Pilih DeployAPI.

  4. Untuk Panggung, pilih produksi.

  5. (Opsional) Untuk deskripsi Deployment, masukkan deskripsi.

  6. Pilih Deploy.

Setelah Anda menyebarkanAPI, Anda dapat memanggilnya. Gunakan panggilan URL untuk menelepon AndaAPI.

Untuk mendapatkan panggilan URL untuk Anda API
  1. Pilih API Anda.

  2. Pilih Tahapan, lalu pilih produksi.

  3. Perhatikan API milik Anda WebSocket URL. URLSeharusnya terlihat sepertiwss://abcdef123.execute-api.us-east-2.amazonaws.com/production.

Sekarang setelah Anda memiliki panggilan AndaURL, Anda dapat menguji koneksi ke Anda WebSocket API.

Untuk menguji koneksi ke API
  1. Gunakan perintah berikut untuk terhubung ke AndaAPI. Pertama, Anda menguji koneksi dengan memanggil /ping jalur.

    wscat -c wss://abcdef123.execute-api.us-east-2.amazonaws.com/production -H "Authorization: Allow" --slash -P
    Connected (press CTRL+C to quit)
  2. Masukkan perintah berikut untuk melakukan ping pada bingkai kontrol. Anda dapat menggunakan bingkai kontrol untuk tujuan keepalive dari sisi klien.

    /ping

    Hasilnya akan terlihat seperti berikut ini:

    < Received pong (data: "")

Sekarang setelah Anda menguji koneksi, Anda dapat menguji apakah Anda API berfungsi dengan benar. Pada langkah ini, Anda membuka jendela terminal baru sehingga WebSocket API dapat mengirim pesan ke semua klien yang terhubung.

Untuk menguji API
  1. Buka terminal baru dan jalankan wscat perintah lagi dengan parameter berikut.

    wscat -c wss://abcdef123.execute-api.us-east-2.amazonaws.com/production -H "Authorization: Allow"
    Connected (press CTRL+C to quit)
  2. APIGateway menentukan rute mana yang akan dipanggil berdasarkan ekspresi pemilihan API permintaan rute Anda. Ekspresi pilih rute Anda API adalah$request.body.action. Akibatnya, API Gateway memanggil sendmessage rute saat Anda mengirim pesan berikut:

    {"action": "sendmessage", "message": "hello, from Step Functions!"}

    Mesin status Step Functions yang terkait dengan rute memanggil fungsi Lambda dengan pesan dan callback. URL Fungsi Lambda memanggil Manajemen API Gateway API dan mengirimkan pesan ke semua klien yang terhubung. Semua klien menerima pesan berikut:

    < hello, from Step Functions!

Sekarang setelah Anda menguji WebSocket API, Anda dapat memutuskan sambungan dari AndaAPI.

Untuk memutuskan sambungan dari API
  • Tekan CTRL+C untuk memutuskan sambungan dari AndaAPI.

    Ketika klien terputus dari AndaAPI, API Gateway memanggil rute $disconnect AndaAPI. Integrasi Lambda untuk rute $disconnect Anda API menghapus ID koneksi dari DynamoDB.

Langkah 7: Bersihkan

Untuk mencegah biaya yang tidak perlu, hapus sumber daya yang Anda buat sebagai bagian dari tutorial ini. Langkah-langkah berikut menghapus AWS CloudFormation tumpukan Anda dan WebSocket API.

Untuk menghapus WebSocket API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pada APIshalaman, pilih websocket-api Anda.

  3. Pilih Tindakan, pilih Hapus, lalu konfirmasikan pilihan Anda.

Untuk menghapus AWS CloudFormation tumpukan
  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pilih AWS CloudFormation tumpukan Anda.

  3. Pilih Hapus dan kemudian konfirmasikan pilihan Anda.

Langkah selanjutnya

Anda dapat mengotomatiskan pembuatan dan pembersihan semua sumber AWS daya yang terlibat dalam tutorial ini. Untuk contoh AWS CloudFormation template yang mengotomatiskan tindakan ini untuk tutorial ini, lihat ws-sfn.zip.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.