AWS แลมบ์ดาคืออะไร? ฟังก์ชันแลมบ์ดาพร้อมตัวอย่าง

ก่อนฟังก์ชัน AWS Lambda มาทำความเข้าใจกันก่อน:

Serverless คืออะไร

Serverless เป็นคำที่โดยทั่วไปหมายถึงแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ แอปพลิเคชันแบบไร้เซิร์ฟเวอร์เป็นแอปพลิเคชันที่ไม่จำเป็นต้องจัดเตรียมเซิร์ฟเวอร์ใดๆ และไม่จำเป็นต้องจัดการเซิร์ฟเวอร์

AWS Lambda คืออะไร

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

ใน AWS Lambda โค้ดจะถูกดำเนินการตามการตอบสนองของเหตุการณ์ในบริการของ AWS เช่น การเพิ่ม/ลบไฟล์ในบัคเก็ต S3, คำขอ HTTP จาก Amazon เกตเวย์ API ฯลฯ อย่างไรก็ตาม Amazon Lambda สามารถใช้เพื่อดำเนินงานเบื้องหลังเท่านั้น

ฟังก์ชัน AWS Lambda ช่วยให้คุณสามารถเน้นไปที่ผลิตภัณฑ์หลักและตรรกะทางธุรกิจของคุณแทนที่จะต้องจัดการการควบคุมการเข้าถึงระบบปฏิบัติการ (OS) การแพตช์ระบบปฏิบัติการ การปรับขนาด การจัดเตรียม การปรับขนาด ฯลฯ

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

ตัวอย่าง AWS Lambda ต่อไปนี้พร้อมไดอะแกรมแบบบล็อกจะอธิบายการทำงานของ AWS Lambda ในไม่กี่ขั้นตอนง่ายๆ:

แผนภาพบล็อก AWS Lambda
แผนภาพบล็อก AWS Lambda

ขั้นตอนที่ 1: ขั้นแรกให้อัปโหลดโค้ด AWS Lambda ในภาษาใดๆ ที่ AWS Lambda รองรับ Java, Python, Go และ C# คือภาษาบางภาษาที่ฟังก์ชัน AWS Lambda รองรับ

ขั้นตอนที่ 2: นี่คือบริการของ AWS บางส่วนที่ให้คุณเรียกใช้ AWS Lambda ได้

ขั้นตอนที่ 3: AWS Lambda ช่วยให้คุณอัปโหลดโค้ดและรายละเอียดเหตุการณ์ที่ควรเรียกใช้งาน

ขั้นตอนที่ 4: รันโค้ด AWS Lambda เมื่อถูกทริกเกอร์โดยบริการของ AWS:

ขั้นตอนที่ 5: AWS จะเรียกเก็บเงินเฉพาะเมื่อโค้ด Lambda ของ AWS ดำเนินการเท่านั้น ไม่ใช่ในกรณีอื่น

สิ่งนี้จะเกิดขึ้นในสถานการณ์ต่อไปนี้:

  • อัปโหลดไฟล์ในบัคเก็ต S3
  • เมื่อเข้าถึง URL ปลายทางการรับ/โพสต์ HTTP
  • สำหรับการเพิ่ม/แก้ไขและลบตาราง Dynamo DB
  • ในกระบวนการรวบรวมกระแสข้อมูล
  • การแจ้งเตือนแบบพุช
  • โฮสติ้งของเว็บไซต์
  • ส่งอีเมล

หมายเหตุ คุณควรจำไว้ว่าคุณจะเรียกเก็บเงินค่าบริการ AWS เฉพาะเมื่อโค้ด AWS Lambda ทำงานเท่านั้น ไม่เช่นนั้น คุณไม่จำเป็นต้องเสียค่าใช้จ่ายใดๆ

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

นี่คือเหตุการณ์ที่จะถูกทริกเกอร์เมื่อคุณใช้ AWS Lambda

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

AWS แลมบ์ดา Concepts

ฟังก์ชั่น:

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

รันไทม์:

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

แหล่งที่มาของเหตุการณ์:

แหล่งที่มาของเหตุการณ์คือบริการของ AWS เช่น Amazon SNS หรือบริการที่กำหนดเอง ฟังก์ชันทริกเกอร์นี้ช่วยให้คุณดำเนินการตรรกะได้

เลเยอร์แลมบ์ดา:

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

บันทึกสตรีม:

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

วิธีใช้ AWS แลมบ์ดา

ตอนนี้ เราจะเรียนรู้วิธีใช้ AWS Lambda กับตัวอย่าง AWS Lambda:

ขั้นตอนที่ 1) ขั้นตอนที่ 1) เปิด URL ของ AWS Lambda
ไปที่ https://aws.amazon.com/lambda/ และเริ่มต้นใช้งาน

วิธีใช้ AWS แลมบ์ดา

ขั้นตอนที่ 2) สร้างบัญชี
ถัดไป สร้างบัญชีหรือลงชื่อเข้าใช้ด้วยบัญชีที่มีอยู่ของคุณ

ขั้นตอนที่ 3) แก้ไขโค้ด & คลิก Run
ในหน้าแลมบ์ดาถัดไป

  1. แก้ไขโค้ด
  2. คลิกเรียกใช้

วิธีใช้ AWS แลมบ์ดา

ขั้นตอนที่ 4) ตรวจสอบเอาต์พุต
คุณจะเห็นผลลัพธ์

วิธีใช้ AWS แลมบ์ดา

AWS แลมบ์ดา VS AWS EC2

นี่คือความแตกต่างที่สำคัญบางประการระหว่าง AWS Lambda และ EC2.

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

AWS Lambda กับ AWS Elastic Beanstalk

นี่คือความแตกต่างที่สำคัญบางประการระหว่าง AWS Lambda และ Elastic Beanstalk

พารามิเตอร์ AWS ยืดหยุ่น Beanstalk AWS แลมบ์ดา
งานหลัก ปรับใช้และจัดการแอปบน AWS Cloud โดยไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐานที่รันแอปพลิเคชันเหล่านั้น AWS Lambda ใช้สำหรับรันและรันโค้ดแบ็คเอนด์ของคุณ คุณไม่สามารถใช้มันเพื่อปรับใช้แอปพลิเคชันได้
การเลือกทรัพยากร AWS มันให้อิสระแก่คุณในการเลือกทรัพยากร AWS; ตัวอย่างเช่น คุณสามารถเลือก EC2 instance ที่เหมาะสมที่สุดตามแอปพลิเคชันของคุณ คุณไม่สามารถเลือกทรัพยากร AWS ได้ เช่นเดียวกับประเภทของ EC2 instance เนื่องจาก Lambda มีทรัพยากรตามปริมาณงานของคุณ
ประเภทของระบบ มันเป็นระบบของรัฐ มันเป็นระบบไร้สัญชาติ

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

AWS Lambda ใช้สำหรับแอปพลิเคชันที่หลากหลาย เช่น:

  • ช่วยคุณในกระบวนการ ETL
  • ช่วยให้คุณสามารถประมวลผลไฟล์แบบเรียลไทม์และประมวลผลสตรีมแบบเรียลไทม์
  • ใช้สำหรับสร้างเว็บแอปพลิเคชัน
  • ใช้ใน Amazon ผลิตภัณฑ์เช่น Alexa Chatbots และ Amazon เอคโค/อเล็กซ่า
  • การประมวลผลข้อมูล (การวิเคราะห์สตรีมมิ่งแบบเรียลไทม์)
  • การสำรองข้อมูลอัตโนมัติของงานประจำวัน
  • แบ็คเอนด์ที่ปรับขนาดได้ (แอปมือถือ อุปกรณ์ Lot)
  • ช่วยให้คุณดำเนินการตรรกะแบ็กเอนด์ฝั่งเซิร์ฟเวอร์
  • ช่วยให้คุณสามารถกรองและแปลงข้อมูลได้

แนวปฏิบัติที่ดีที่สุดของฟังก์ชัน Lambda

ต่อไปนี้เป็นแนวทางปฏิบัติที่ดีที่สุดของ AWS ฟังก์ชั่นแลมบ์ดา:

  • ใช้ “การหมดเวลา” ที่ถูกต้อง
  • ใช้ฟังก์ชันที่จัดเก็บในเครื่องซึ่งมีขนาด 500MB ในโฟลเดอร์ /temp
  • ลดการใช้โค้ดเริ่มต้นซึ่งไม่เกี่ยวข้องโดยตรงกับการประมวลผลเหตุการณ์ปัจจุบันให้เหลือน้อยที่สุด
  • คุณควรใช้ CloudWatch Monitoring ในตัวของฟังก์ชัน Lambda เพื่อดูและเพิ่มประสิทธิภาพเวลาแฝงของคำขอ

เมื่อใดที่ไม่ควรใช้ AWS Lambda

ต่อไปนี้เป็นสถานการณ์ที่ Lambda ไม่ใช่ตัวเลือกที่เหมาะสมอย่างแน่นอน:

  • ไม่เหมาะสมที่จะใช้แพ็คเกจซอฟต์แวร์หรือแอปพลิเคชัน AWS Lambda ที่ต้องอาศัยการเรียกใช้พื้นฐาน Windows RPC
  • หากใช้สำหรับแอปพลิเคชันซอฟต์แวร์แบบกำหนดเองที่มีข้อตกลงสิทธิ์การใช้งานเช่นการประมวลผลเอกสาร MS-Office Oracle ฐานข้อมูล ฯลฯ
  • ไม่ควรใช้ AWS Lambda สำหรับกระบวนการฮาร์ดแวร์แบบกำหนดเอง เช่น การเร่งความเร็ว GPU ความเกี่ยวข้องของฮาร์ดแวร์

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

นี่คือข้อดี/ประโยชน์ของการใช้ AWS lambda:

  • AWS Lambda เป็นเครื่องมือที่มีความยืดหยุ่นสูงในการใช้งาน
  • ช่วยให้คุณให้สิทธิ์การเข้าถึงทรัพยากร รวมถึง VPC
  • ผู้เขียนโดยตรงกับ WYSIWบรรณาธิการวายจี ในคอนโซล
  • คุณสามารถใช้มันเป็นปลั๊กอินสำหรับ Eclipse และ Visual Studio.
  • เนื่องจากเป็นสถาปัตยกรรมไร้เซิร์ฟเวอร์ คุณจึงไม่จำเป็นต้องกังวลเรื่องการจัดการหรือจัดเตรียมเซิร์ฟเวอร์
  • คุณไม่จำเป็นต้องตั้งค่าใดๆ เครื่องเสมือน.
  • ช่วยให้นักพัฒนาเรียกใช้และดำเนินการตอบสนองต่อโค้ดของเหตุการณ์โดยไม่ต้องสร้างโครงสร้างพื้นฐานใดๆ
  • คุณเพียงแค่ต้องใช้เวลาคำนวณเฉพาะเมื่อโค้ดของคุณทำงานเท่านั้น
  • คุณสามารถตรวจสอบประสิทธิภาพโค้ดของคุณได้แบบเรียลไทม์ผ่าน CloudWatch
  • ช่วยให้คุณสามารถรันโค้ดโดยไม่ต้องจัดเตรียมหรือจัดการเซิร์ฟเวอร์อื่นๆ
  • ช่วยให้คุณรันโค้ดเมื่อจำเป็นเท่านั้น
  • คุณสามารถปรับขนาดได้โดยอัตโนมัติเพื่อรองรับคำขอสองสามรายการต่อวัน และยังรองรับคำขอมากกว่าพันรายการต่อวินาทีอีกด้วย
  • คุณสามารถกำหนดค่า AWS Lambda ได้ด้วยความช่วยเหลือของตัวจับเวลาเหตุการณ์ภายนอกเพื่อดำเนินงานตามกำหนดเวลา
  • ฟังก์ชัน Lambda ใน AWS ควรได้รับการกำหนดค่าด้วยเหตุการณ์ภายนอกและตัวจับเวลา สามารถใช้สำหรับการตั้งเวลาได้
  • ฟังก์ชัน Lambda ไม่มีสถานะเพื่อให้สามารถปรับขนาดได้อย่างรวดเร็ว
  • AWS Lambda ทำงานรวดเร็ว ดังนั้นจะรันโค้ดของคุณภายในเสี้ยววินาที

ข้อจำกัดของ AWS Lambda

ข้อเสีย/ข้อเสียของการใช้ AWS Lambda มีดังนี้

  • เครื่องมือ AWS Lambda ไม่เหมาะสำหรับโปรเจ็กต์ขนาดเล็ก
  • AWS Lambda อาศัย AWS สำหรับโครงสร้างพื้นฐานทั้งหมด ดังนั้นคุณจึงไม่สามารถติดตั้งซอฟต์แวร์เพิ่มเติมใดๆ ได้หากโค้ดของคุณต้องการ
  • การดำเนินการพร้อมกันถูกจำกัดไว้ที่ 100
  • AWS Lambda ขึ้นอยู่กับ AWS สำหรับโครงสร้างพื้นฐานโดยสิ้นเชิง คุณไม่สามารถติดตั้งซอฟต์แวร์เพิ่มเติมใดๆ ได้หากโค้ดของคุณต้องการ
  • ปริมาณหน่วยความจำอาจแตกต่างกันระหว่าง 128 ถึง 1536 MB
  • คำขอกิจกรรมไม่ควรเกิน 128 KB
  • ฟังก์ชัน Lambda ช่วยให้คุณเขียนบันทึกใน CloudWatch เท่านั้น นี่เป็นเครื่องมือเดียวที่ช่วยให้คุณสามารถตรวจสอบหรือแก้ไขปัญหาฟังก์ชันของคุณได้
  • การหมดเวลาการรันโค้ดคือเพียง 5 นาที

สรุป

  • Serverless เป็นคำที่โดยทั่วไปหมายถึงแอปพลิเคชันแบบไร้เซิร์ฟเวอร์
  • AWS Lambda เป็นหนึ่งในบริการประมวลผลแบบไร้เซิร์ฟเวอร์ ดังนั้นคุณจึงไม่ต้องกังวลว่าทรัพยากร AWS ใดที่จะเปิดตัว หรือจะจัดการทรัพยากรเหล่านั้นอย่างไร
  • ฟังก์ชันคือโปรแกรมหรือสคริปต์ที่ทำงานใน Lambda แบบไร้เซิร์ฟเวอร์ AWS
  • รันไทม์อนุญาตให้ใช้ฟังก์ชันในภาษาต่างๆ ซึ่งทำงานบนสภาพแวดล้อมการดำเนินการพื้นฐานเดียวกัน
  • แหล่งที่มาของเหตุการณ์คือบริการของ AWS เช่น Amazon SNS หรือบริการที่กำหนดเอง
  • เลเยอร์ Lambda เป็นกลไกการกระจายที่สำคัญสำหรับไลบรารี รันไทม์แบบกำหนดเอง และการขึ้นต่อกันของฟังก์ชันที่สำคัญอื่นๆ
  • สตรีมบันทึกช่วยให้คุณสามารถใส่คำอธิบายประกอบโค้ดฟังก์ชันของคุณด้วยคำสั่งการบันทึกแบบกำหนดเอง ซึ่งช่วยให้คุณวิเคราะห์โฟลว์การดำเนินการและประสิทธิภาพของฟังก์ชัน Lambda ของคุณ
  • AWS Lambda คือแพลตฟอร์มในรูปแบบบริการ (PaaS) ช่วยให้คุณเรียกใช้และรันโค้ดแบ็กเอนด์ของคุณได้
  • AWS EC2 เป็นโครงสร้างพื้นฐานในรูปแบบบริการ (laaS) ให้บริการทรัพยากรคอมพิวเตอร์เสมือนจริง
  • ปรับใช้และจัดการแอปบน AWS Cloud โดยไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐานที่รันแอปพลิเคชันเหล่านั้น
  • AWS Lambda ใช้สำหรับรันและรันโค้ดแบ็คเอนด์ของคุณ คุณไม่สามารถใช้มันเพื่อปรับใช้แอปพลิเคชันได้
  • AWS Lambda ช่วยคุณในเรื่อง กระบวนการ ETL.
  • แนวปฏิบัติที่ดีที่สุดของฟังก์ชัน Lambda ใน AWS คือการใช้ “การหมดเวลา” ที่ถูกต้อง
  • ไม่เหมาะสมที่จะใช้แพ็คเกจซอฟต์แวร์หรือแอปพลิเคชัน AWS Lambda ที่ต้องอาศัยการเรียกใช้พื้นฐาน Windows RPC
  • AWS Lambda เป็นเครื่องมือที่มีความยืดหยุ่นสูง
  • เครื่องมือ AWS Lambda ไม่เหมาะสำหรับโปรเจ็กต์ขนาดเล็ก
  • เหตุการณ์ทั่วไปที่จะถูกทริกเกอร์เมื่อคุณใช้ AWS Lambda คือการแทรก การอัปเดตและการลบข้อมูลตาราง Dynamo DB