Rumah >hujung hadapan web >tutorial js >Jadualkan Acara dalam EventBridge dengan Lambda

Jadualkan Acara dalam EventBridge dengan Lambda

Linda Hamilton
Linda Hamiltonasal
2024-12-20 01:36:11370semak imbas

Schedule Events in EventBridge with 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!

Apakah itu AWS EventBridge?

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.

Apakah AWS Lambda?

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.

Prasyarat

Sebelum kita mula, pastikan anda mempunyai perkara berikut:

  1. Akaun AWS
  2. Pengetahuan asas Node.js
  3. AWS CLI dikonfigurasikan pada mesin anda

Langkah 1: Menyediakan Persekitaran AWS Anda

Mencipta Peranan IAM

Pertama sekali, kami perlu mencipta peranan IAM yang membolehkan AWS EventBridge Scheduler menggunakan fungsi Lambda anda.

  1. Pergi ke IAM Console: Navigasi ke konsol IAM, pilih Peranan daripada anak tetingkap navigasi kiri dan klik Cipta peranan.

  2. Pilih Entiti Dipercayai: Pilih perkhidmatan AWS, pilih Lambda dan klik Seterusnya: Kebenaran.

  3. Lampirkan Polisi: Lampirkan dasar terurus berikut:

    • AWSLambdaBasicExecutionRole: Menyediakan kebenaran pelaksanaan Lambda asas.
    • AmazonEventBridgeSchedulerFullAccess: Membenarkan EventBridge Scheduler mengurus jadual.
  4. Semak dan Buat: Berikan nama untuk peranan, cth., LambdaExecutionRole, semak tetapan dan klik Buat peranan.

  5. 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"
       }
     ]
   }

Langkah 2: Mencipta Fungsi Lambda

Kami akan mencipta fungsi Lambda yang akan memproses acara yang dijadualkan.

  1. Pergi ke Konsol Lambda: Navigasi ke konsol Lambda, klik Buat fungsi dan pilih Pengarang dari awal.

  2. 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.

  3. 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"
       }
     ]
   }
  1. Gunakan Fungsi: Klik Gunakan untuk menyimpan perubahan.

Langkah 3: Menjadualkan Acara

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

Ekstrak butiran acara daripada input aplikasi anda. Berikut ialah contoh:

npm install @aws-sdk/client-scheduler @aws-sdk/client-lambda

Tukar IST kepada UTC

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
};

Formatkan Rentetan Masa UTC

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

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';

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn