การใช้ฟังก์ชัน Lambda กับเหตุการณ์ตามกำหนดการ

เหตุการณ์ที่กำหนดไว้จะเกิดขึ้นในช่วงเวลาปกติตามชุดกฎ เหตุการณ์ตามกำหนดการใช้เพื่อเรียกใช้ฟังก์ชัน Lambda หลังจากช่วงเวลาที่กำหนดไว้ในบริการคลาวด์วอทช์ ใช้สำหรับการทำงานกับงาน cron ร่วมกับ AWS Lambda ได้ดีที่สุด บทนี้จะอธิบายด้วยตัวอย่างง่ายๆในการส่งอีเมลทุก ๆ 5 นาทีโดยใช้เหตุการณ์ตามกำหนดการและ AWS Lambda

ข้อกำหนด

ข้อกำหนดสำหรับการใช้ฟังก์ชัน Lambda กับเหตุการณ์ตามกำหนดการมีดังนี้ -

  • ยืนยันรหัสอีเมลโดยใช้ AWS SES
  • สร้างบทบาทเพื่อใช้ AWS SES, Cloudwatch และ AWS Lambda
  • สร้าง Lambda Function เพื่อส่งอีเมล
  • เพิ่มกฎสำหรับเหตุการณ์ตามกำหนดการจาก AWS CloudWatch

ตัวอย่าง

ตัวอย่างที่เราจะพิจารณาจะเพิ่มเหตุการณ์ CloudWatch ในฟังก์ชัน AWS Lambda Cloudwatch จะเรียกใช้ AWS Lambda ตามรูปแบบเวลาที่แนบมา ตัวอย่างเช่นในตัวอย่างด้านล่างเราใช้เวลา 5 นาทีเป็นตัวกระตุ้น หมายความว่าทุกๆ 5 นาที AWS Lambda จะถูกทริกเกอร์และ AWS Lambda จะส่งอีเมลเมื่อใดก็ตามที่ถูกทริกเกอร์

แผนภาพบล็อกพื้นฐานสำหรับสิ่งเดียวกันแสดงอยู่ด้านล่าง -

ยืนยันรหัสอีเมลโดยใช้ AWS SES

เข้าสู่ระบบ AWS และไปที่บริการ AWS SES ดังที่แสดงด้านล่าง -

ตอนนี้คลิก Simple Email บริการตามรูป -

คลิก Email Addresses ด้านซ้ายตามภาพ -

จะแสดงปุ่ม Verify a New Email Address. คลิกเลย

ป้อน Email Addressคุณต้องการยืนยัน คลิกVerify This Email Addressปุ่ม. คุณจะได้รับอีเมลจาก AWS ในรหัสอีเมลนั้นพร้อมหัวเรื่องอีเมล: Amazon Web Services - คำขอยืนยันที่อยู่อีเมลในภูมิภาคสหรัฐอเมริกาฝั่งตะวันออก (เวอร์จิเนียเหนือ)

คลิกลิงก์ที่ให้ไว้ในอีเมลเพื่อยืนยันที่อยู่อีเมล เมื่อตรวจสอบแล้วจะแสดงรหัสอีเมลดังนี้ -

สร้างบทบาทเพื่อใช้ AWS SES, Cloudwatch และ AWS Lambda

คุณยังสามารถสร้างบทบาทที่ให้สิทธิ์ในการใช้บริการ สำหรับสิ่งนี้ไปที่ IAM แล้วเลือกบทบาท เพิ่มนโยบายที่จำเป็นและสร้างบทบาท สังเกตว่าบทบาทที่สร้างขึ้นนี้คือevents with lambda.

สร้างฟังก์ชัน Lambda เพื่อส่งอีเมล

คุณจะต้องทำตามขั้นตอนเพื่อสร้างฟังก์ชัน Lambda โดยใช้รันไทม์เป็น nodejs

ตอนนี้เพิ่มทริกเกอร์ให้กับ Lambda ตามที่แสดง -

เพิ่มรายละเอียดไปที่ CloudWatch Events Trigger ดังแสดงด้านล่าง -

โปรดทราบว่าเหตุการณ์จะถูกทริกเกอร์หลังจากทุกๆ 5 นาทีตามทริกเกอร์กฎที่สร้างขึ้น

รหัสแลมด้าสำหรับส่งอีเมลมีให้ด้านล่าง -

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data: "this mail comes from aws lambda event scheduling"
            }
         },
         Subject: {
            Data: "Event scheduling from aws lambda"
         }
      },
      Source: "[email protected]"
   };
   console.log('===SENDING EMAIL===');
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
      else {
         console.log("===EMAIL SENT===");
         console.log("EMAIL CODE END");
         console.log('EMAIL: ', email);
         context.succeed(event);
         callback(null, "email is send");
      }
   });
};

ตอนนี้เราต้องการบริการ AWS SES คุณสามารถเพิ่มสิ่งนี้โดยใช้รหัสที่แสดงดังนี้ -

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});

ในการส่งจดหมายจาก nodejsเราได้สร้าง eParams วัตถุที่มีรายละเอียดเช่นไฟล์ example mail, to mail id และ the body with message ดังต่อไปนี้ -

var eParams = {
   Destination: {
      ToAddresses: ["[email protected]"]
   },
   Message: {
      Body: {
         Text: {
            Data: "this mail comes from aws lambda event scheduling"
         }
      },
      Subject: {
         Data: "Event scheduling from aws lambda"
      }
   },
   Source: "[email protected]"
};

รหัสแลมด้าสำหรับส่งอีเมลมีดังนี้ -

var email = ses.sendEmail(eParams, function(err, data) {
   if (err) console.log(err);
   else {
      console.log("===EMAIL SENT===");
      console.log("EMAIL CODE END");
      console.log('EMAIL: ', email);
      context.succeed(event);
      callback(null, "email is send");
   }
});

ตอนนี้ให้เราบันทึกฟังก์ชัน Lambda นี้และตรวจสอบรหัสอีเมลสำหรับอีเมล ภาพหน้าจอที่แสดงด้านล่างแสดงว่าอีเมลถูกส่งจาก AWS Lambda ทุก ๆ 5 นาที