AWS Lambda - ภาพรวม

AWS Lambdaเป็นบริการที่ดำเนินการคอมพิวเตอร์แบบไร้เซิร์ฟเวอร์ซึ่งเกี่ยวข้องกับการประมวลผลโดยไม่มีเซิร์ฟเวอร์ใด ๆ รหัสจะดำเนินการตามการตอบสนองของเหตุการณ์ในบริการของ AWS เช่นการเพิ่ม / ลบไฟล์ในบัคเก็ต S3 การอัปเดตตาราง dB ไดนาโมของ Amazon คำขอ HTTP จากเกตเวย์ Amazon API เป็นต้น

เพื่อทำงานร่วมกับ AWS Lambdaเราต้องพุชโค้ดในบริการ AWS Lambda งานและทรัพยากรอื่น ๆ ทั้งหมดเช่นโครงสร้างพื้นฐานระบบปฏิบัติการการบำรุงรักษาเซิร์ฟเวอร์การตรวจสอบรหัสบันทึกและความปลอดภัยจะได้รับการดูแลโดย AWS

AWS Lambdaรองรับภาษาเช่น Java, NodeJS, Python, C # และ Go โปรดทราบว่า AWS Lambda จะใช้งานได้กับบริการของ AWS เท่านั้น

AWS Lambda คืออะไร

คำจำกัดความของ AWS Lambda ตามเอกสารอย่างเป็นทางการมีดังต่อไปนี้ -

AWS Lambda เป็นบริการประมวลผลที่ให้คุณรันโค้ดโดยไม่ต้องจัดเตรียมหรือจัดการเซิร์ฟเวอร์ AWS Lambda จะรันโค้ดของคุณเมื่อจำเป็นเท่านั้นและปรับขนาดโดยอัตโนมัติตั้งแต่ไม่กี่คำขอต่อวันไปจนถึงหลายพันต่อวินาที คุณจ่ายเฉพาะเวลาประมวลผลที่คุณใช้เท่านั้น - ไม่มีค่าใช้จ่ายเมื่อรหัสของคุณไม่ทำงาน

AWS Lambda ทำงานอย่างไร

แผนภาพบล็อกที่อธิบายการทำงานของ AWS Lambda ในห้าขั้นตอนง่ายๆดังแสดงด้านล่าง -

Step 1 − อัปโหลดโค้ด AWS lambda ในภาษาใดก็ได้ที่ AWS lambda รองรับนั่นคือ NodeJS, Java, Python, C # และ Go

Step 2 − นี่เป็นบริการ AWS เพียงไม่กี่บริการที่สามารถเรียกใช้ AWS lambda ได้

Step 3 −AWS Lambda ซึ่งมีรหัสอัปโหลดและรายละเอียดเหตุการณ์ที่ทริกเกอร์เกิดขึ้น ตัวอย่างเช่นเหตุการณ์จาก Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, แอปมือถือเป็นต้น

Step 4 − เรียกใช้ AWS Lambda Code เฉพาะเมื่อถูกเรียกใช้โดยบริการของ AWS ภายใต้สถานการณ์เช่น -

  • ผู้ใช้อัปโหลดไฟล์ในถัง S3
  • http get / post endpoint URL ถูกตี
  • ข้อมูลถูกเพิ่ม / อัปเดต / ลบในตารางไดนาโม dB
  • ผลักดันการแจ้งเตือน
  • การรวบรวมสตรีมข้อมูล
  • การโฮสต์เว็บไซต์
  • การส่งอีเมล
  • แอพมือถือ ฯลฯ

Step 5 − โปรดจำไว้ว่า AWS จะเรียกเก็บเงินเฉพาะเมื่อรหัส AWS lambda ดำเนินการเท่านั้นไม่ใช่อย่างอื่น

ข้อดีของการใช้ AWS Lambda

AWS Lambda มอบสิทธิประโยชน์มากมายเมื่อคุณใช้งาน ส่วนนี้จะกล่าวถึงรายละเอียด -

ใช้งานง่ายกับรหัส

AWS Lambda มอบโครงสร้างพื้นฐานในการอัปโหลดโค้ดของคุณ ดูแลรักษารหัสและเรียกใช้รหัสเมื่อใดก็ตามที่เหตุการณ์ที่ต้องการเกิดขึ้น ช่วยให้คุณสามารถเลือกหน่วยความจำและระยะหมดเวลาที่จำเป็นสำหรับรหัส

AWS Lambda ยังสามารถดำเนินการตามคำขอแบบขนานตามเหตุการณ์ที่เรียก

การจัดสรรบันทึก

AWS Lambda ให้รายละเอียดจำนวนครั้งที่มีการเรียกใช้โค้ดและเวลาที่ใช้ในการดำเนินการหน่วยความจำที่ใช้ไปเป็นต้น AWS CloudWatch รวบรวมบันทึกทั้งหมดซึ่งช่วยในการทำความเข้าใจขั้นตอนการดำเนินการและในการดีบักโค้ด

การเรียกเก็บเงินตามการใช้งาน

การเรียกเก็บเงิน AWS Lambda ดำเนินการตามการใช้หน่วยความจำคำขอที่ทำและการดำเนินการซึ่งจะเรียกเก็บเงินทีละขั้นต่ำ 100ms ดังนั้นสำหรับการดำเนินการ 500ms การเรียกเก็บเงินจะเกิดขึ้นทุก ๆ 100ms หากคุณระบุรหัส AWS lambda ของคุณที่จะดำเนินการใน 500ms และเวลาที่ใช้ในการดำเนินการเพียง 200ms AWS จะเรียกเก็บเงินจากคุณเฉพาะช่วงเวลาที่ดำเนินการนั่นคือการดำเนินการ 200ms แทนที่จะเป็น 500ms AWS จะเรียกเก็บเงินตามเวลาดำเนินการที่ใช้เสมอ คุณไม่จำเป็นต้องจ่ายเงินหากฟังก์ชันนี้ไม่ได้ดำเนินการ

รองรับหลายภาษา

AWS Lambda รองรับภาษายอดนิยมเช่น Node js, Python, Java, C # และ Go ภาษาเหล่านี้เป็นภาษาที่ใช้กันอย่างแพร่หลายและนักพัฒนาทุกคนจะพบว่าการเขียนโค้ดสำหรับ AWS Lambda เป็นเรื่องง่าย

ง่ายต่อการเขียนโค้ดและปรับใช้

มีตัวเลือกมากมายสำหรับ Lambda สำหรับการสร้างและปรับใช้โค้ด สำหรับการเขียนโค้ดของคุณคุณสามารถใช้ AWS online editor, Visual Studio IDE หรือ Eclipse IDE นอกจากนี้ยังรองรับเฟรมเวิร์กแบบไร้เซิร์ฟเวอร์ซึ่งทำให้การเขียนและปรับใช้โค้ด AWS Lambda เป็นเรื่องง่าย นอกจากคอนโซล AWS แล้วเรายังมี AWS-cli สำหรับสร้างและปรับใช้โค้ด

คุณสมบัติอื่น ๆ

คุณสามารถใช้ AWS Lambda ได้ฟรีโดยการเข้าสู่ระบบ AWS free tier ให้บริการฟรี 1 ปี ดูบริการฟรีที่นำเสนอโดย AWS free tier

ข้อเสียของการใช้ AWS Lambda

แม้จะมีข้อดีหลายประการ AWS Lambda ก็มีข้อเสียดังต่อไปนี้ -

  • ไม่เหมาะสำหรับโครงการขนาดเล็ก

  • คุณต้องวิเคราะห์รหัสของคุณอย่างรอบคอบและตัดสินใจว่าหน่วยความจำและระยะหมดเวลา ในกรณีที่ฟังก์ชันของคุณต้องการเวลามากกว่าที่ได้รับการจัดสรรฟังก์ชันจะถูกยกเลิกตามระยะหมดเวลาที่ระบุไว้และโค้ดจะไม่ถูกเรียกใช้งานอย่างสมบูรณ์

  • เนื่องจาก AWS Lambda ใช้ AWS อย่างสมบูรณ์สำหรับโครงสร้างพื้นฐานคุณจึงไม่สามารถติดตั้งซอฟต์แวร์เพิ่มเติมใด ๆ ได้หากรหัสของคุณต้องการ

เหตุการณ์ที่ทริกเกอร์ AWS Lambda

เหตุการณ์สามารถทริกเกอร์ AWS Lambda มีดังนี้ -

  • เข้าสู่วัตถุ S3
  • การแทรกการอัพเดตและการลบข้อมูลในตาราง Dynamo DB
  • ผลักดันการแจ้งเตือนจาก SNS
  • GET / POST เรียก API Gateway
  • การแก้ไขส่วนหัวที่ผู้ดูหรือคำขอต้นทาง / การตอบกลับใน CloudFront
  • รายการบันทึกในสตรีมข้อมูล AWS Kinesis
  • บันทึกประวัติใน CloudTrail

ใช้กรณีของ AWS Lambda

AWS Lambda เป็นบริการประมวลผลที่ส่วนใหญ่ใช้เพื่อเรียกใช้กระบวนการเบื้องหลัง สามารถทริกเกอร์ได้เมื่อใช้กับบริการ AWS อื่น ๆ รายชื่อบริการ AWS ที่เราสามารถใช้ AWS Lambda ได้รับด้านล่าง -

S3 Object และ AWS Lambda

Amazon S3 ส่งรายละเอียดกิจกรรมไปยัง AWS Lambda เมื่อมีการอัปโหลดไฟล์ใด ๆ ใน S3 รายละเอียดของการอัปโหลดไฟล์หรือการลบไฟล์หรือการย้ายไฟล์จะถูกส่งผ่านไปยัง AWS Lambda รหัสใน AWS Lambda สามารถทำตามขั้นตอนที่จำเป็นเมื่อได้รับรายละเอียดกิจกรรม ตัวอย่างการสร้างภาพขนาดย่อของภาพที่แทรกลงใน S3

DynamoDB และ AWS Lambda

DynamoDB สามารถทริกเกอร์ AWS Lambda เมื่อมีการเพิ่มอัปเดตและลบข้อมูลในตาราง เหตุการณ์ AWS Lambda มีรายละเอียดทั้งหมดของตาราง AWS DynamoDB เกี่ยวกับการแทรก / อัปเดตหรือลบ

API Gateway และ AWS Lambda

API Gateway สามารถทริกเกอร์ AWS Lambda บนเมธอด GET / POST เราสามารถสร้างแบบฟอร์มและแชร์รายละเอียดกับปลายทาง API Gateway และใช้กับ AWS Lambda สำหรับการประมวลผลเพิ่มเติมตัวอย่างเช่นการป้อนข้อมูลในตาราง DynamoDB

SNS และ AWS Lambda

SNS ใช้สำหรับการแจ้งเตือนแบบพุชการส่ง SMS เป็นต้นเราสามารถเรียกใช้ AWS lambda ได้เมื่อมีการแจ้งเตือนแบบพุชเกิดขึ้นใน SNS นอกจากนี้เรายังสามารถส่ง SMS ไปยังหมายเลขโทรศัพท์จาก AWS Lambda เมื่อได้รับทริกเกอร์

กิจกรรมตามกำหนดการและ AWS Lambda

กิจกรรมตามกำหนดการสามารถใช้สำหรับงาน cron สามารถทริกเกอร์ AWS Lambda ให้ทำงานตามรูปแบบเวลาปกติได้

CloudTrail และ AWS Lambda

CloudTrail มีประโยชน์ในการตรวจสอบบันทึกในบัญชี เราสามารถใช้ AWS Lambda เพื่อประมวลผลบันทึก CloudTrail เพิ่มเติมได้

Kinesis และ AWS Lambda

Kinesis ใช้เพื่อบันทึก / จัดเก็บข้อมูลการติดตามแบบเรียลไทม์ที่มาจากการคลิกเว็บไซต์บันทึกฟีดโซเชียลมีเดียและทริกเกอร์ไปยัง AWS Lambda สามารถประมวลผลเพิ่มเติมในบันทึกนี้ได้

CloudFront และ Lambda @ Edge

CloudFront เป็นเครือข่ายการจัดส่งเนื้อหาที่คุณสามารถโฮสต์เว็บไซต์ของคุณและ Lambda @ Edge สามารถใช้เพื่อประมวลผลส่วนหัวที่มาจากคำขอของผู้ดูคำขอต้นทางการตอบกลับต้นทางและการตอบสนองของผู้ดู การแก้ไขส่วนหัวรวมถึงงานต่างๆเช่นการแก้ไขข้อมูลคุกกี้การเขียน URL ใหม่ใช้สำหรับการทดสอบ AB เพื่อเปลี่ยนการตอบกลับที่ส่งไปยังผู้ใช้กลับการเพิ่มข้อมูลส่วนหัวเพิ่มเติมเพื่อความปลอดภัยเป็นต้น