บทนำสู่ทริกเกอร์ที่มีอยู่เพื่อเรียกใช้ฟังก์ชัน Lambda

Bthna Su Thrik Kexr Thi Mi Xyu Pheux Reiyk Chi Fangkchan Lambda



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

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

ในบทความนี้ คุณจะเห็นคำอธิบายสั้น ๆ เกี่ยวกับบริการและเทคนิคที่สามารถใช้เพื่อเรียกใช้ฟังก์ชันแลมบ์ดาของคุณใน Amazon







ประเภทของอัญเชิญ

ก่อนที่เราจะดำเนินการต่อไป ให้เราพูดถึงการเรียกใช้สองประเภทหลักต่อไปนี้ที่ฟังก์ชันแลมบ์ดาสามารถจัดการได้



  • การเรียกแบบซิงโครนัส
  • การเรียกแบบอะซิงโครนัส
  1. การเรียกแบบซิงโครนัส
    ในการเรียกใช้แบบซิงโครนัส เซอร์วิสที่เรียกใช้แลมบ์ดาต้องรอจนกว่าผลลัพธ์จะถูกส่งคืน จากนั้นจึงดำเนินการกับกระบวนการที่เหลือ เราสามารถพูดได้ว่าเอาต์พุตของฟังก์ชันแลมบ์ดานั้นต้องการโดยฟังก์ชันหรือตัวบริการเองที่เรียกใช้แลมบ์ดานี้
  2. การเรียกแบบอะซิงโครนัส

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



วิธีต่างๆ ในการเรียกใช้ Lambda

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





เรียกใช้ฟังก์ชัน Lambda โดยตรง

ในกรณีส่วนใหญ่ ฟังก์ชันแลมบ์ดาได้รับการออกแบบให้ทริกเกอร์โดยใช้บริการอื่นๆ แต่คุณสามารถเรียกใช้ได้โดยตรงโดยใช้คอนโซลการจัดการของ AWS, AWS CLI และผ่าน URL ของฟังก์ชัน

เรียกใช้ Lambda จากคอนโซลการจัดการ

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



คุณสามารถสร้างเหตุการณ์ที่กำหนดเองรวมทั้งใช้คอนโซลที่มีรูปแบบเหตุการณ์ที่กำหนดเองได้

ด้วยวิธีนี้ ฟังก์ชันแลมบ์ดาสามารถเรียกใช้งานได้จากคอนโซล AWS

AWS CLI

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

[ป้องกันอีเมล] :~$ aws แลมบ์ดาเรียกใช้ \
--function-name < ป้อนชื่อฟังก์ชันแลมบ์ดา > \
--payload < ค่าอินพุต สำหรับ ฟังก์ชั่นแลมบ์ดา > \
--cli-ไบนารีรูปแบบ < ฐาน64 | raw-in-base64-out > < ชื่อไฟล์เอาต์พุต >

ฟังก์ชันนี้ทริกเกอร์ได้สำเร็จและคุณสามารถสังเกตสิ่งนี้ได้ในเอาต์พุต

URL ฟังก์ชัน

URL ของฟังก์ชันคือปลายทาง HTTP ที่คุณสามารถกำหนดค่าสำหรับฟังก์ชันแลมบ์ดาของคุณได้ URL นี้สามารถใช้เพื่อทริกเกอร์ฟังก์ชันแลมบ์ดา และคุณยังสามารถแชร์ URL นี้กับผู้ใช้รายอื่นได้แม้ภายนอกบัญชี AWS ของคุณเพื่อเรียกใช้ฟังก์ชันแลมบ์ดา แม้ว่าคุณควรระมัดระวังเกี่ยวกับ URL ของฟังก์ชัน ทุกคนที่มีลิงก์นี้สามารถเรียกใช้ฟังก์ชัน lambda ของคุณได้นับครั้งไม่ถ้วน และค่าใช้จ่ายทั้งหมดจะอยู่ในหัวของคุณ

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

ในกรณีที่คุณไม่ได้แนบ URL ของฟังก์ชันขณะสร้างฟังก์ชัน lambda คุณสามารถทำได้ในภายหลัง สำหรับสิ่งนี้ คุณต้องไปที่แท็บการกำหนดค่า เลือก URL ของฟังก์ชัน แล้วคลิก สร้างฟังก์ชัน URL .

ด้วยวิธีนี้ URL ของฟังก์ชันจะถูกสร้างขึ้นและใช้เพื่อเรียกใช้ฟังก์ชันแลมบ์ดา

เรียกใช้ฟังก์ชัน Lambda โดยใช้บริการของ AWS

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

API เกตเวย์

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

หากต้องการเพิ่มบริการใด ๆ ให้เป็นทริกเกอร์ให้กับฟังก์ชันแลมบ์ดาของคุณ เพียงไปที่ฟังก์ชันแลมบ์ดาแล้วคลิกเพิ่มทริกเกอร์

ถัดไป คุณสามารถเลือกบริการที่คุณต้องการแนบเป็นทริกเกอร์ฟังก์ชันแลมบ์ดาของคุณ สำหรับส่วนนี้ เราเลือกเกตเวย์ API เป็นทริกเกอร์สำหรับฟังก์ชันแลมบ์ดา

ถัดไป กำหนดค่าบริการตามที่คุณต้องการให้ดำเนินการในโครงสร้างแอปพลิเคชันของคุณ

API มีสองประเภทที่รองรับโดยเกตเวย์ API และสามารถใช้เพื่อเรียกใช้ฟังก์ชันแลมบ์ดาได้

HTTP APIs : ใช้เพื่อสร้างปลายทาง HTTP ซึ่งกำหนดเส้นทางไปยังฟังก์ชันแลมบ์ดาของคุณ HTTP APIs ให้ฟังก์ชันการทำงานน้อยลงและมีค่าใช้จ่ายในการใช้งานน้อยลง

REST APIs : หากคุณต้องการคุณสมบัติเพิ่มเติมใน API ของคุณ คุณต้องไปที่ REST API API เหล่านี้สามารถเรียกใช้ฟังก์ชันแลมบ์ดาและใช้วิธี HTTP เดียวกันได้ ทำให้มีความยืดหยุ่นและความเป็นอิสระมากขึ้น

ถัง S3

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

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

อาจมีสถานการณ์อื่นๆ มากมายที่ S3 สามารถใช้เป็นทริกเกอร์เพื่อเรียกใช้ฟังก์ชันแลมบ์ดาได้

โหลดบาลานเซอร์

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

ในการเพิ่มแอปพลิเคชันโหลดบาลานเซอร์ให้กับฟังก์ชันแลมบ์ดา ก่อนอื่นคุณต้องสร้างกลุ่มเป้าหมายและเพิ่มฟังก์ชันแลมบ์ดาลงในกลุ่มเป้าหมายนั้น ตอนนี้ กลุ่มเป้าหมายที่สร้างขึ้นใหม่สามารถเพิ่มไปยัง Listener ของ Application Load Balancer ได้

CloudFront

Amazon CloudFront เป็น CDN (Content Delivery Network) จริงๆ และใช้เพื่อแคชข้อมูลแอปพลิเคชันที่ตำแหน่ง Edge ที่ใกล้กับผู้ใช้ปลายทางมากกว่าเมื่อเปรียบเทียบกับเซิร์ฟเวอร์แอปพลิเคชันจริง เมื่อใช้ CloudFront คุณสามารถปรับปรุงเวลาตอบสนองเพื่อให้บริการเนื้อหาแบบคงที่แก่ผู้ใช้ปลายทางทั่วโลกได้อย่างแท้จริง

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

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

ในการกำหนดค่านี้ ให้ไปที่ เพิ่มทริกเกอร์ และเลือกบริการ CloudFront ที่นั่นคุณจะเห็น นำไปใช้กับ [ป้องกันอีเมล] ตัวเลือก.

ตอนนี้ คุณเพียงแค่ต้องทำตามขั้นตอนการกำหนดค่าและเริ่มต้นใช้งาน

บันทึก CloudWatch

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

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

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

จากนั้นเลือกฟังก์ชันแลมบ์ดาที่คุณต้องการและพร้อมใช้งาน

ตอนนี้ เมื่อใดก็ตามที่ CloudWatch ได้รับสตรีมบันทึกนั้นจะทำหน้าที่เป็นตัวกระตุ้นเพื่อเรียกใช้ฟังก์ชันแลมบ์ดา

EventBridge

Amazon EventBridge (ก่อนหน้านี้เรียกว่า CloudWatch Events) เป็นบริการของ AWS ที่ให้คุณสร้างกฎเหตุการณ์เพื่อเรียกใช้บริการ AWS เฉพาะในเหตุการณ์เฉพาะที่เกิดขึ้นในบัญชี AWS

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

หากคุณได้ตั้งค่ากฎ EventBridge ไว้แล้ว คุณสามารถเพิ่มกฎนี้เป็นทริกเกอร์ให้กับฟังก์ชันแลมบ์ดาของคุณได้อย่างง่ายดาย เลือก EventBridge เป็นตัวกระตุ้นของคุณและเพียงแค่ระบุชื่อของกฎ

มีการเพิ่มกฎที่มีอยู่ที่นี่เป็นตัวกระตุ้น แต่คุณสามารถสร้างกฎได้ ณ จุดนี้

DynamoDB

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

ข้อมูลจาก DynamoDB สามารถโหลดไปยังแลมบ์ดาเป็นอินพุตในรูปแบบของแบตช์ และได้รับการประมวลผลโดยใช้โค้ดที่ปรับใช้ในแลมบ์ดา

คิเนซิส

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

คุณเพิ่งกำหนดค่า Kinesis data stream เพื่อเรียกใช้ฟังก์ชัน lambda

SNS

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

สร้างหัวข้อ SNS ก่อน จากนั้นใช้เพื่อเรียกใช้ฟังก์ชันแลมบ์ดาของคุณ

คุณต้องเลือกชื่อหัวข้อ SNS ของคุณ ไม่มีการกำหนดค่าหรือการตั้งค่าอื่นๆ

บทสรุป

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