Rumah >hujung hadapan web >tutorial js >Jadualkan Acara dalam EventBridge dengan Lambda
Dalam catatan blog ini, kami akan meneroka cara menjadualkan acara menggunakan AWS EventBridge Scheduler dan AWS Lambda. Kaedah ini cekap dan berskala, memastikan aplikasi anda boleh mengendalikan berbilang acara yang dijadualkan tanpa membuat kucar-kacir peraturan EventBridge individu. Jom terjun!
AWS EventBridge ialah perkhidmatan bas acara tanpa pelayan yang memudahkan untuk menyambungkan aplikasi menggunakan data daripada aplikasi anda sendiri, aplikasi Perisian-sebagai-Perkhidmatan (SaaS) bersepadu dan perkhidmatan AWS. EventBridge menyampaikan aliran data masa nyata daripada sumber acara dan mengarahkan data tersebut ke sasaran seperti AWS Lambda, Amazon SNS dan banyak lagi.
AWS Lambda ialah perkhidmatan pengiraan tanpa pelayan yang membolehkan anda menjalankan kod tanpa memperuntukkan atau mengurus pelayan. Anda boleh mencetuskan fungsi Lambda terus daripada perkhidmatan AWS lain, seperti S3, DynamoDB atau EventBridge dan skala secara automatik daripada beberapa permintaan setiap hari kepada beribu-ribu sesaat.
Sebelum kita mula, pastikan anda mempunyai perkara berikut:
Pertama sekali, kami perlu mencipta peranan IAM yang membolehkan AWS EventBridge Scheduler menggunakan fungsi Lambda anda.
Pergi ke IAM Console: Navigasi ke konsol IAM, pilih Peranan daripada anak tetingkap navigasi kiri dan klik Cipta peranan.
Pilih Entiti Dipercayai: Pilih perkhidmatan AWS, pilih Lambda dan klik Seterusnya: Kebenaran.
Lampirkan Polisi: Lampirkan dasar terurus berikut:
Semak dan Buat: Berikan nama untuk peranan, cth., LambdaExecutionRole, semak tetapan dan klik Buat peranan.
Kemas kini Perhubungan Amanah: Selepas peranan dibuat, pergi ke halaman butiran peranan. Di bawah tab Perhubungan kepercayaan, klik Edit perhubungan kepercayaan. Kemas kini dasar amanah untuk memasukkan perkhidmatan scheduler.amazonaws.com:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Kami akan mencipta fungsi Lambda yang akan memproses acara yang dijadualkan.
Pergi ke Konsol Lambda: Navigasi ke konsol Lambda, klik Buat fungsi dan pilih Pengarang dari awal.
Konfigurasikan Fungsi Lambda: Tetapkan nama fungsi kepada processScheduledEvent, pilih Node.js 16.x sebagai masa jalan dan gunakan peranan sedia ada yang anda buat sebelum ini (LambdaExecutionRole). Klik Buat fungsi.
Tambah Kod Fungsi: Gantikan kod lalai dengan logik anda untuk memproses acara. Sebagai contoh, anda mungkin log butiran acara atau melakukan tindakan khusus berdasarkan data acara:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Sekarang, mari tulis kod untuk menjadualkan acara menggunakan AWS EventBridge Scheduler.
Mula-mula, pasang modul AWS SDK yang diperlukan:
exports.handler = async (event) => { const eventDetails = event; // Your logic to process the event console.log("Processing scheduled event:", eventDetails); // Example: Process event // processEvent(eventDetails); return { statusCode: 200, body: JSON.stringify('Event processed successfully'), }; };
Berikut ialah ringkasan langkah untuk melaksanakan fungsi penjadualan:
Ekstrak butiran acara daripada input aplikasi anda. Berikut ialah contoh:
npm install @aws-sdk/client-scheduler @aws-sdk/client-lambda
Tukar masa yang dijadualkan daripada IST (Waktu Piawai India) kepada UTC (Waktu Sejagat Selaras).
const eventDetails = { name: "TEST-EVENT-01", userId: "USER123", eventId: "EVENT-001", eventTime: '2024-12-17T18:05:00+05:30' // IST time in ISO format };
Pastikan rentetan masa UTC berada dalam format yang betul yang diperlukan oleh EventBridge Scheduler (yyyy-MM-ddTHH:mm:ssZ).
const istTime = new Date(eventDetails.eventTime); // IST time const utcTime = new Date(istTime.getTime() - 5.5 * 60 * 60 * 1000); // Convert to UTC
Buat jadual EventBridge menggunakan AWS SDK, nyatakan fungsi Lambda ARN sebagai sasaran dan sertakan butiran acara sebagai input.
const utcString = utcTime.toISOString().split('.')[0] + 'Z';
Dalam catatan blog ini, kami melalui proses menyediakan acara berjadual menggunakan AWS EventBridge Scheduler dan Lambda. Pendekatan ini memastikan bahawa aplikasi kami boleh mengendalikan berbilang acara yang dijadualkan dengan cekap dan berskala. Dengan kuasa AWS, anda boleh membina ciri teguh yang meningkatkan pengalaman pengguna dan menyelaraskan operasi.
Selamat mengekod!
Atas ialah kandungan terperinci Jadualkan Acara dalam EventBridge dengan Lambda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!