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 ในไม่กี่ขั้นตอนง่ายๆ:
ขั้นตอนที่ 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/ และเริ่มต้นใช้งาน
ขั้นตอนที่ 2) สร้างบัญชี
ถัดไป สร้างบัญชีหรือลงชื่อเข้าใช้ด้วยบัญชีที่มีอยู่ของคุณ
ขั้นตอนที่ 3) แก้ไขโค้ด & คลิก Run
ในหน้าแลมบ์ดาถัดไป
- แก้ไขโค้ด
- คลิกเรียกใช้
ขั้นตอนที่ 4) ตรวจสอบเอาต์พุต
คุณจะเห็นผลลัพธ์
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