AWS แลมบ์ดาคืออะไร? ฟังก์ชันแลมบ์ดาพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
AWS Lambda คือแพลตฟอร์มการประมวลผลแบบไร้เซิร์ฟเวอร์ที่ขับเคลื่อนด้วยเหตุการณ์ Amazon บริการเว็บที่รันโค้ดของคุณเมื่อมีการเรียกใช้งาน โดยจัดการการจัดสรรทรัพยากร การปรับขนาด และการจัดการเซิร์ฟเวอร์โดยอัตโนมัติ เพื่อให้คุณมุ่งเน้นไปที่ตรรกะทางธุรกิจเท่านั้น
ก่อนที่จะศึกษา AWS Lambda อย่างละเอียด เราควรทำความเข้าใจก่อนว่า Serverless หมายถึงอะไร
Serverless คืออะไร
คำว่า Serverless โดยทั่วไปหมายถึงแอปพลิเคชันที่ไม่ต้องใช้เซิร์ฟเวอร์ แอปพลิเคชันแบบ Serverless คือแอปพลิเคชันที่ไม่จำเป็นต้องจัดหาเซิร์ฟเวอร์และไม่จำเป็นต้องจัดการเซิร์ฟเวอร์ใดๆ
AWS Lambda คืออะไร
AWS Lambda เป็นแพลตฟอร์มการประมวลผลแบบไร้เซิร์ฟเวอร์ที่ขับเคลื่อนด้วยเหตุการณ์ซึ่งให้บริการโดย Amazon เป็นส่วนหนึ่งของ Amazon บริการเว็บ ดังนั้นคุณจึงไม่ต้องกังวลว่าจะต้องเปิดใช้งานทรัพยากร AWS ใด หรือจะจัดการทรัพยากรเหล่านั้นอย่างไร เพียงแค่ใส่โค้ดลงใน Lambda แล้วมันก็จะทำงานเอง
ใน AWS Lambda โค้ดจะถูกเรียกใช้งานตามการตอบสนองของเหตุการณ์ในบริการ AWS เช่น การเพิ่มหรือลบไฟล์ใน S3 bucket หรือคำขอ HTTP จากเซิร์ฟเวอร์ Amazon API Gateway และเหตุการณ์ที่คล้ายคลึงกัน อย่างไรก็ตาม Amazon Lambda สามารถใช้เพื่อดำเนินงานเบื้องหลังเท่านั้น
ฟังก์ชัน AWS Lambda ช่วยให้คุณมุ่งเน้นไปที่ผลิตภัณฑ์หลักและตรรกะทางธุรกิจของคุณ แทนที่จะต้องจัดการกับการควบคุมการเข้าถึงระบบปฏิบัติการ (OS) การอัปเดตแพตช์ OS การปรับขนาดที่เหมาะสม การจัดสรรทรัพยากร การขยายขนาด และอื่นๆ
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 จะคิดค่าบริการเฉพาะเมื่อโค้ด AWS Lambda ทำงานเท่านั้น และจะไม่คิดค่าบริการในกรณีอื่น ๆ
สิ่งนี้จะเกิดขึ้นในสถานการณ์ต่อไปนี้:
- อัปโหลดไฟล์ในบัคเก็ต S3
- เมื่อใช้งานเอนด์พอยต์ HTTP get/post URL ถูกโจมตี
- สำหรับการเพิ่ม แก้ไข และลบตาราง 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 นี้ยังช่วยให้คุณจัดการโค้ดฟังก์ชันการพัฒนาของคุณแยกจากโค้ดและทรัพยากรที่ไม่เปลี่ยนแปลงที่ใช้
บันทึกสตรีม: Log stream ช่วยให้คุณสามารถใส่คำอธิบายประกอบในโค้ดฟังก์ชันของคุณด้วยคำสั่งบันทึกข้อมูลแบบกำหนดเอง ซึ่งจะช่วยให้คุณวิเคราะห์ขั้นตอนการทำงานและประสิทธิภาพของฟังก์ชัน AWS Lambda ของคุณได้
วิธีใช้ AWS แลมบ์ดา
ต่อไปนี้ เราจะมาเรียนรู้วิธีการใช้งาน AWS Lambda โดยใช้ตัวอย่าง AWS Lambda:
ขั้นตอน 1) เปิด AWS Lambda URL
ไปที่ https://aws.amazon.com/lambda/ และเริ่มกันเลย
ขั้นตอน 2) สร้างบัญชี
ขั้นตอนต่อไป สร้างบัญชีผู้ใช้ใหม่ หรือเข้าสู่ระบบด้วยบัญชีที่มีอยู่แล้วของคุณ
ขั้นตอน 3) แก้ไขโค้ดแล้วคลิกเรียกใช้
ในหน้า Lambda ถัดไป ให้แก้ไขโค้ดแล้วคลิก Run
ขั้นตอน 4) ตรวจสอบเอาท์พุท
คุณจะเห็นผลลัพธ์
AWS แลมบ์ดา VS AWS EC2
นี่คือความแตกต่างที่สำคัญบางประการระหว่าง AWS Lambda และ EC2.
| พารามิเตอร์ | AWS แลมบ์ดา | AWS EC2 |
| คำนิยาม | AWS Lambda คือแพลตฟอร์มในรูปแบบบริการ (PaaS) ช่วยให้คุณเรียกใช้และรันโค้ดแบ็กเอนด์ของคุณได้ | AWS EC2 เป็นโครงสร้างพื้นฐานในรูปแบบบริการ (Infrastructure as a Service หรือ IaaS) ซึ่งให้บริการทรัพยากรการประมวลผลเสมือนจริง |
| ความยืดหยุ่น | ไม่เปิดโอกาสให้ล็อกอินเข้าสู่เครื่องประมวลผลได้อย่างยืดหยุ่น แต่สามารถเลือกใช้ระบบปฏิบัติการหรือภาษารันไทม์ที่กำหนดเองได้ | มอบความยืดหยุ่นในการเลือกอินสแตนซ์ ระบบปฏิบัติการที่กำหนดเอง แพตช์ความปลอดภัย และเครือข่าย ฯลฯ ที่หลากหลาย |
| กระบวนการติดตั้ง | คุณต้องเลือกสภาพแวดล้อมที่คุณต้องการรันโค้ด และส่งโค้ดไปยัง AWS Lambda | เป็นครั้งแรกใน EC2 คุณต้องเลือกระบบปฏิบัติการและติดตั้งซอฟต์แวร์ทั้งหมดที่จำเป็น จากนั้นจึงพุชโค้ดของคุณใน EC2 |
| ข้อจำกัดด้านสิ่งแวดล้อม | มีข้อจำกัดในการใช้งานในบางภาษา | ไม่มีข้อจำกัดด้านสิ่งแวดล้อม |
AWS Lambda เทียบกับ AWS Elastic Beanstalk
ต่อไปนี้คือความแตกต่างที่สำคัญบางประการระหว่าง AWS Lambda และ Elastic Beanstalk.
| พารามิเตอร์ | AWS ยืดหยุ่น Beanstalk | AWS แลมบ์ดา |
| งานหลัก | ปรับใช้และจัดการแอปบน AWS Cloud โดยไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐานที่รันแอปพลิเคชันเหล่านั้น | AWS Lambda ใช้สำหรับรันและประมวลผลโค้ดแบ็กเอนด์ของคุณ ไม่สามารถใช้ในการปรับใช้แอปพลิเคชันได้ |
| การเลือกทรัพยากร AWS | วิธีนี้ช่วยให้คุณมีอิสระในการเลือกใช้ทรัพยากร AWS ตัวอย่างเช่น คุณสามารถเลือกอินสแตนซ์ EC2 ที่เหมาะสมที่สุดสำหรับแอปพลิเคชันของคุณได้ | คุณไม่สามารถเลือกทรัพยากร AWS ได้ เช่น ประเภทของอินสแตนซ์ EC2; Lambda จะจัดหาทรัพยากรตามปริมาณงานของคุณ |
| ประเภทของระบบ | มันเป็นระบบของรัฐ | มันเป็นระบบไร้สัญชาติ |
กรณีการใช้งานของ AWS Lambda
AWS Lambda ถูกนำไปใช้ในแอปพลิเคชันที่หลากหลาย เช่น:
- ช่วยคุณในเรื่อง กระบวนการ ETL
- ช่วยให้คุณสามารถประมวลผลไฟล์แบบเรียลไทม์และประมวลผลสตรีมแบบเรียลไทม์
- ใช้สำหรับสร้างเว็บแอปพลิเคชัน
- ใช้ใน Amazon ผลิตภัณฑ์เช่น Alexa Chatbots และ Amazon เอคโค/อเล็กซ่า
- การประมวลผลข้อมูล (การวิเคราะห์สตรีมมิ่งแบบเรียลไทม์)
- การสำรองข้อมูลอัตโนมัติสำหรับงานประจำวัน
- ระบบแบ็กเอนด์ที่ปรับขนาดได้ (แอปพลิเคชันมือถือ อุปกรณ์ IoT)
- ช่วยให้คุณดำเนินการตรรกะแบ็กเอนด์ฝั่งเซิร์ฟเวอร์
- ช่วยให้คุณสามารถกรองและแปลงข้อมูลได้
แนวปฏิบัติที่ดีที่สุดของฟังก์ชัน Lambda
ต่อไปนี้คือแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้งานฟังก์ชัน AWS Lambda:
- ใช้ “การหมดเวลา” ที่ถูกต้อง
- ใช้ประโยชน์จากพื้นที่จัดเก็บข้อมูลภายในเครื่อง ซึ่งมีขนาด 500MB ในโฟลเดอร์ /temp
- ลดการใช้โค้ดเริ่มต้นที่ไม่เกี่ยวข้องโดยตรงกับการประมวลผลเหตุการณ์ปัจจุบันให้น้อยที่สุด
- คุณควรใช้ CloudWatch Monitoring ในตัวของฟังก์ชัน Lambda เพื่อดูและเพิ่มประสิทธิภาพเวลาแฝงของคำขอ
เมื่อใดที่ไม่ควรใช้ AWS Lambda
ต่อไปนี้คือสถานการณ์ที่ Lambda ไม่ใช่ตัวเลือกที่เหมาะสมอย่างแน่นอน:
- ไม่เหมาะสมที่จะใช้ AWS Lambda สำหรับซอฟต์แวร์หรือแอปพลิเคชันที่ต้องพึ่งพาการเรียกใช้ฟังก์ชันพื้นฐานของระบบ Windows อาร์พีซี
- หากนำไปใช้กับแอปพลิเคชันซอฟต์แวร์แบบกำหนดเองที่มีข้อตกลงด้านลิขสิทธิ์ เช่น โปรแกรมประมวลผลเอกสาร 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 อย่างสมบูรณ์ ดังนั้นคุณจึงไม่สามารถติดตั้งซอฟต์แวร์เพิ่มเติมใดๆ ได้ หากโค้ดของคุณต้องการเช่นนั้น
- การประมวลผลพร้อมกันมีข้อจำกัดเริ่มต้นที่ 1,000 รายการต่อภูมิภาค ซึ่งสามารถเพิ่มได้ตามคำขอ
- ความจุหน่วยความจำอาจแตกต่างกันไปตั้งแต่ 128 MB ถึง 10,240 MB
- คำขอกิจกรรมไม่ควรเกิน 128 KB
- ฟังก์ชัน Lambda ช่วยให้คุณเขียนบันทึกใน CloudWatch เท่านั้น นี่เป็นเครื่องมือเดียวที่ช่วยให้คุณสามารถตรวจสอบหรือแก้ไขปัญหาฟังก์ชันของคุณได้
- ระยะเวลาการเรียกใช้โค้ดถูกจำกัดไว้ที่ 15 นาที





