Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Membuat titik akhir webhook menggunakan URL fungsi Lambda
Dalam tutorial ini, Anda membuat URL fungsi Lambda untuk mengimplementasikan endpoint webhook. Webhook adalah komunikasi ringan yang digerakkan oleh peristiwa yang secara otomatis mengirimkan data antar aplikasi menggunakan HTTP. Anda dapat menggunakan webhook untuk menerima pembaruan langsung tentang peristiwa yang terjadi di sistem lain, seperti ketika pelanggan baru mendaftar di situs web, pembayaran diproses, atau file diunggah.
Dengan Lambda, webhook dapat diimplementasikan menggunakan URL fungsi Lambda atau API Gateway. URL fungsi adalah pilihan yang baik untuk webhook sederhana yang tidak memerlukan fitur seperti otorisasi lanjutan atau validasi permintaan.
Tip
Jika Anda tidak yakin solusi mana yang terbaik untuk kasus penggunaan khusus Anda, lihatPilih metode untuk memanggil Fungsi Peristiwa Lambda Anda menggunakan permintaan HTTP.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda harus memiliki Python (versi 3.8 atau yang lebih baru) atau Node.js (versi 18 atau lebih baru) diinstal pada mesin lokal Anda.
Untuk menguji titik akhir menggunakan permintaan HTTP, tutorial menggunakan curl
Buat Fungsi Acara Lambda
Pertama buat Lambda Event Function yang berjalan ketika permintaan HTTP dikirim ke endpoint webhook Anda. Dalam contoh ini, aplikasi pengirim mengirimkan pembaruan setiap kali pembayaran dikirimkan dan menunjukkan di badan permintaan HTTP apakah pembayaran berhasil. Fungsi Acara Lambda mem-parsing permintaan dan mengambil tindakan sesuai dengan status pembayaran. Dalam contoh ini, kode hanya mencetak ID pesanan untuk pembayaran, tetapi dalam aplikasi nyata, Anda dapat menambahkan pesanan ke database atau mengirim pemberitahuan.
Fungsi ini juga mengimplementasikan metode otentikasi yang paling umum digunakan untuk webhook, otentikasi pesan berbasis hash (HMAC). Dengan metode ini, aplikasi pengirim dan penerima berbagi kunci rahasia. Aplikasi pengiriman menggunakan algoritma hashing untuk menghasilkan tanda tangan unik menggunakan kunci ini bersama dengan konten pesan, dan menyertakan tanda tangan dalam permintaan webhook sebagai header HTTP. Aplikasi penerima kemudian mengulangi langkah ini, menghasilkan tanda tangan menggunakan kunci rahasia, dan membandingkan nilai yang dihasilkan dengan tanda tangan yang dikirim di header permintaan. Jika hasilnya cocok, permintaan dianggap sah.
Buat fungsi menggunakan konsol Lambda dengan Python atau runtime. Node.js
Buat kunci rahasia
Untuk Lambda Event Function untuk mengotentikasi permintaan webhook, ia menggunakan kunci rahasia yang dibagikan dengan aplikasi panggilan. Dalam contoh ini, kunci disimpan dalam variabel lingkungan. Dalam aplikasi produksi, jangan sertakan informasi sensitif seperti kata sandi dalam kode fungsi Anda. Sebagai gantinya, buat AWS Secrets Manager rahasia dan kemudian gunakan ekstensi AWS Parameter dan Rahasia Lambda untuk mengambil kredensyal Anda di Fungsi Acara Lambda Anda.
Buat dan simpan kunci rahasia webhook
-
Hasilkan string acak yang panjang menggunakan generator nomor acak yang aman secara kriptografis. Anda dapat menggunakan cuplikan kode berikut dengan Python atau Node.js untuk menghasilkan dan mencetak rahasia 32 karakter, atau menggunakan metode pilihan Anda sendiri.
-
Simpan string yang Anda hasilkan sebagai variabel lingkungan untuk fungsi Anda dengan melakukan hal berikut:
-
Di tab Konfigurasi untuk fungsi Anda, pilih variabel Lingkungan.
-
Pilih Edit.
-
Pilih Tambahkan variabel lingkungan.
-
Untuk Kunci, masukkan
WEBHOOK_SECRET, lalu untuk Nilai, masukkan rahasia yang Anda buat di langkah sebelumnya. -
Pilih Simpan.
-
Anda harus menggunakan rahasia ini lagi nanti di tutorial untuk menguji fungsi Anda, jadi catat sekarang.
Buat titik akhir URL fungsi
Buat titik akhir untuk webhook Anda menggunakan URL fungsi Lambda. Karena Anda menggunakan jenis autentikasi NONE untuk membuat titik akhir dengan akses publik, siapa pun yang memiliki URL dapat memanggil fungsi Anda. Untuk mempelajari lebih lanjut tentang mengontrol akses ke URL fungsi, lihatKontrol akses ke URL fungsi Lambda. Jika Anda memerlukan opsi otentikasi lanjutan untuk webhook Anda, pertimbangkan untuk menggunakan API Gateway.
Buat titik akhir URL fungsi
-
Di tab Konfigurasi untuk Fungsi Acara Anda, pilih URL Fungsi.
-
Pilih Buat URL fungsi.
-
Untuk jenis Auth, pilih NONE.
-
Pilih Simpan.
Titik akhir untuk URL fungsi yang baru saja Anda buat ditampilkan di panel URL Fungsi. Salin titik akhir untuk digunakan nanti dalam tutorial.
Uji Fungsi Acara di konsol
Sebelum menggunakan permintaan HTTP untuk memanggil Fungsi Acara Anda menggunakan titik akhir URL, uji di konsol untuk mengonfirmasi kode Anda berfungsi seperti yang diharapkan.
Untuk memverifikasi Fungsi Acara di konsol, pertama-tama Anda menghitung tanda tangan webhook menggunakan rahasia yang Anda buat sebelumnya dalam tutorial dengan payload JSON pengujian berikut:
{ "type": "payment.success", "orderId": "1234", "amount": "99.99" }
Gunakan salah satu contoh Python atau Node.js kode berikut untuk menghitung tanda tangan webhook menggunakan rahasia Anda sendiri.
Anda sekarang dapat menguji kode fungsi Anda menggunakan permintaan HTTP pengujian di konsol.
Uji Fungsi Acara di konsol
-
Pilih tab Kode untuk Fungsi Acara Anda.
-
Di bagian TEST EVENTS, pilih Create new test event
-
Untuk Nama Acara, masukkan
myEvent. -
Ganti JSON yang ada dengan menyalin dan menempelkan berikut ini ke panel Event JSON. Ganti tanda tangan webhook dengan nilai yang Anda hitung pada langkah sebelumnya.
{ "headers": { "Content-Type": "application/json", "x-webhook-signature": "2d672e7a0423fab740fbc040e801d1241f2df32d2ffd8989617a599486553e2a" }, "body": "{\"type\": \"payment.success\", \"orderId\": \"1234\", \"amount\": \"99.99\"}" } -
Pilih Simpan.
-
Pilih Panggil.
Anda akan melihat output yang serupa dengan yang berikut:
Uji Fungsi Acara menggunakan permintaan HTTP
Gunakan alat baris perintah curl untuk menguji titik akhir webhook Anda.
Uji Fungsi Acara menggunakan permintaan HTTP
-
Dalam program terminal atau shell, jalankan perintah curl berikut. Ganti URL dengan nilai untuk titik akhir URL fungsi Anda sendiri dan ganti tanda tangan webhook dengan tanda tangan yang Anda hitung menggunakan kunci rahasia Anda sendiri.
curl -X POSThttps://ryqgmbx5xjzxahif6frvzikpre0bpvpf.lambda-url.us-west-2.on.aws/\ -H "Content-Type: application/json" \ -H "x-webhook-signature:d5f52b76ffba65ff60ea73da67bdf1fc5825d4db56b5d3ffa0b64b7cb85ef48b" \ -d '{"type": "payment.success", "orderId": "1234", "amount": "99.99"}'Anda akan melihat output berikut:
{"received": true} -
Periksa CloudWatch log untuk fungsi Anda untuk mengonfirmasinya mengurai muatan dengan benar dengan melakukan hal berikut:
-
Buka halaman grup Log
di CloudWatch konsol Amazon. -
Pilih grup log fungsi Anda (
/aws/lambda/myLambdaWebhook). -
Pilih aliran log yang terbaru.
Anda akan melihat output yang mirip dengan yang berikut di log fungsi Anda:
-
-
Konfirmasikan bahwa kode Anda mendeteksi tanda tangan yang tidak valid dengan menjalankan perintah curl berikut. Ganti URL dengan titik akhir URL fungsi Anda sendiri.
curl -X POSThttps://ryqgmbx5xjzxahif6frvzikpre0bpvpf.lambda-url.us-west-2.on.aws/\ -H "Content-Type: application/json" \ -H "x-webhook-signature: abcdefg" \ -d '{"type": "payment.success", "orderId": "1234", "amount": "99.99"}'Anda akan melihat output berikut:
{"error": "Invalid signature"}
Bersihkan sumber daya Anda
Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.
Untuk menghapus Fungsi Acara Lambda
-
Buka halaman Fungsi Acara
konsol Lambda. -
Pilih Fungsi Acara yang Anda buat.
-
Pilih Tindakan, Hapus.
-
Ketik
confirmkolom input teks dan pilih Hapus.
Saat Anda membuat Fungsi Peristiwa Lambda di konsol, Lambda juga membuat peran eksekusi untuk fungsi Anda.
Untuk menghapus peran eksekusi
-
Buka halaman Peran
dari konsol IAM. -
Pilih peran eksekusi yang dibuat Lambda. Peran memiliki format nama
myLambdaWebhook-role-<random string>. -
Pilih Hapus.
-
Masukkan nama peran di bidang input teks dan pilih Hapus.