AWS Lambda - บทนำ
AWS Lambda เป็นบริการที่ดูแลการคำนวณโค้ดของคุณโดยไม่ต้องมีเซิร์ฟเวอร์ใด ๆ กล่าวกันว่าเป็นการประมวลผลแบบไร้เซิร์ฟเวอร์ รหัสจะดำเนินการตามการตอบสนองของเหตุการณ์ในบริการของ AWS เช่นการเพิ่ม / ลบไฟล์ในที่เก็บข้อมูล S3 การอัปเดตตาราง Amazon DynamoDB คำขอ HTTP จากเกตเวย์ Amazon Api เป็นต้น
โค้ด AWS Lambda สามารถเขียนใน NodeJS, Java, C #, Python และ Go บทนี้จะพูดถึงรายละเอียดเกี่ยวกับการสร้างฟังก์ชัน AWS Lambda ในคอนโซล AWS
AWS Console
เข้าสู่ระบบ AWS Console ที่ลิงค์ https://aws.amazon.com/console. เมื่อคุณเข้าสู่ระบบแล้วระบบจะนำคุณไปยังหน้าจอที่แสดงบริการของ AWS

ตัวอย่าง: การสร้างฟังก์ชัน
ให้เราเข้าใจการทำงานของ AWS Console ด้วยความช่วยเหลือของตัวอย่าง คลิกที่ Lambda (ทำเครื่องหมายไว้ด้านบน) ระบบจะเปลี่ยนเส้นทางเพื่อสร้างฟังก์ชันดังที่แสดงด้านล่าง -

คลิก Create function ปุ่มและหน้าจอจะแสดงรายละเอียดดังต่อไปนี้ -

โปรดทราบว่าโดยค่าเริ่มต้นตัวเลือกคือ Author from scratch. ตัวเลือกนี้ช่วยให้คุณสามารถเขียนโค้ด Lambda ตั้งแต่เริ่มต้น มันจะมีฟังก์ชันง่ายๆด้วยhello world ข้อความ.
ตัวเลือกที่สอง Blue prints มีรายละเอียดดังต่อไปนี้

ให้รายละเอียดของโค้ดที่เขียนไว้แล้วสำหรับบริการ aws ในภาษาที่มีให้กับ AWS Lambda ในกรณีที่คุณต้องเขียนโค้ด AWS Lambda สำหรับบริการใด ๆ ที่คุณสามารถเช็คอินได้blue prints และเริ่มต้น
ตัวเลือกที่สาม Serverless Application Repository มีการตั้งค่าแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ซึ่งจะช่วยในการปรับใช้โค้ด AWS Lambda
ในการอภิปรายเพิ่มเติมเราจะดำเนินการกับตัวเลือกแรกที่เราสร้างฟังก์ชัน AWS lambda โดยใช้ Author from scratch.
ก่อนที่เราจะสร้างฟังก์ชัน Lambda จะต้องมีบทบาทเช่นสิทธิ์ในการทำงานกับบริการของ AWS และ aws lambda ในภายหลังจะต้องกำหนดบทบาทให้กับฟังก์ชัน aws lambda
การสร้างบทบาทใน AWS Console
สำหรับการสร้างบทบาทใน AWS Console ให้ไปที่บริการคอนโซล AWS แล้วคลิกที่ IAM ดังที่แสดงด้านล่าง -

ตอนนี้ถ้าคุณคลิก IAMคุณจะเห็นหน้าจอดังที่แสดงด้านล่าง -

หากคุณเลือก Rolesคุณจะเห็นปุ่มต่อไปนี้บนหน้าจอ -

ตอนนี้คลิก Create role. ระบบจะขอให้คุณเลือกบริการที่คุณต้องใช้บทบาทที่สร้างขึ้น

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

ตัวอย่างเช่นหากคุณต้องการอนุญาตให้ AWS Lambda ทำงานกับ S3 และ DynamoDB คุณต้องเลือกนโยบาย ในช่องค้นหาป้อนบริการ AWS แล้วคลิกที่ช่องทำเครื่องหมาย คุณสามารถเลือกหลายนโยบายและคลิกในภายหลังNext:Review.
นอกจากนี้ยังสามารถสร้างนโยบายของคุณเองได้ ตัวอย่างเช่นมีตาราง dynamodb และคุณต้องให้สิทธิ์เฉพาะกับตารางนั้นในกรณีเช่นนี้คุณสามารถสร้างนโยบายได้
คลิกที่ Create policyตามที่แสดงในหน้าจอด้านบน ต่อไปนี้เป็นรายละเอียดที่แสดงบนหน้าจอ

เลือก Serviceซึ่งคุณกำลังสร้างนโยบาย หลังจากนั้นจะแสดงข้อมูลสำหรับการดำเนินการresources และ Request conditions.

ตอนนี้เราควรเลือกใช้บริการ ให้เราเลือกAWS Dynamodb จากการค้นหา Actions มีรายละเอียดดังต่อไปนี้ -

ตอนนี้ให้ป้อนไฟล์ Access levelคุณต้องการมอบให้กับ DynamoDB จากนั้นresources จะแสดงรายละเอียดดังต่อไปนี้ -

ตอนนี้เลือกประเภททรัพยากรตาราง คุณสามารถดูผลลัพธ์ต่อไปนี้ -

สำหรับการอนุญาตบนโต๊ะคุณต้อง Add ARN. ARN เป็นรายละเอียดเฉพาะของตารางที่สร้างใน AWS DynamoDB คุณจะได้รับรายละเอียดเมื่อสร้างตารางใน dynamodb
หากคุณคลิก Add ARN และจะแสดงรายละเอียดดังต่อไปนี้ -

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

ที่นี่เราได้เลือกสองนโยบาย AmazonS3FullAccess และ AmazonDynamoDBFullACcess. เราได้ให้สิทธิ์เข้าถึง S3 และ DynamoDB อย่างสมบูรณ์ในบทบาทนั้น อย่างไรก็ตามขอแนะนำให้คุณอนุญาตเฉพาะที่เก็บข้อมูลและตารางที่จำเป็นเท่านั้น
คุณสามารถทำตามขั้นตอนที่กล่าวไว้ก่อนหน้านี้เพื่อสร้างนโยบายโดยใช้ ARN.
ขั้นตอนที่ 1
คลิก Create roleปุ่มเพื่อสร้างบทบาท บทบาททั้งหมดที่สร้างขึ้นจะแสดงดังรูป -

ขั้นตอนที่ 2
โปรดทราบว่าคุณสามารถเลือกบทบาทที่คุณต้องการได้ในกรณีที่คุณต้องการการแก้ไขใด ๆ สำหรับบทบาทที่สร้างขึ้น ถ้าเราเลือกAuthor from scratch optionคุณต้องป้อน Name, Runtime and Role.

ขั้นตอนที่ 3
คุณสามารถสังเกตรายละเอียดต่อไปนี้ใน Runtime ดรอปดาวน์ -

ขั้นตอนที่ 4
คุณสามารถเลือกรันไทม์ที่คุณต้องการและดำเนินการตามที่แสดง

Role ดรอปดาวน์มีตัวเลือกดังต่อไปนี้ -
Choose an existing role − สิ่งนี้จะแสดงบทบาททั้งหมดที่สร้างขึ้นในบทบาท IAM
Create new role from template(s) −สิ่งนี้จะช่วยให้คุณสามารถสร้างบทบาทและจะแสดงสิทธิ์ที่จะถูกเลือกสำหรับบทบาทนั้น สังเกตภาพหน้าจอเพื่อความเข้าใจที่ดีขึ้น
Create a custom role − สิ่งนี้ช่วยให้ผู้ใช้สามารถสร้างนโยบายตามที่เรากล่าวไว้ก่อนหน้านี้
ขั้นตอนที่ 5
เลือกไฟล์ runtime, roleและเพิ่มฟังก์ชัน คลิกที่Create functionปุ่มเพื่อสร้างฟังก์ชันแลมบ์ดา หน้าจอถัดไปจะปรากฏดังนี้ -

ส่วนต่างๆของฟังก์ชัน AWS Lambda
มีสองส่วนสำหรับฟังก์ชัน AWS Lambda:Configuration และ Monitoring. ให้เราคุยกันโดยละเอียด
การกำหนดค่า
ฟังก์ชันต่อไปนี้รวมอยู่ในการกำหนดค่า
Add Triggers
ทริกเกอร์ที่จำเป็นในการเพิ่มลงในฟังก์ชัน AWS Lambda จะแสดงดังนี้ -

โปรดทราบว่าเมื่อเราเลือกทริกเกอร์เราจำเป็นต้องเพิ่มรายละเอียดการกำหนดค่าสำหรับทริกเกอร์นั้น ตัวอย่างสำหรับทริกเกอร์ S3 เราต้องเลือกชื่อที่เก็บข้อมูล สำหรับ Dynamodb trigger เราต้องเลือกชื่อตาราง
ตัวอย่าง
ให้เราดูตัวอย่างรายละเอียดการกำหนดค่าสำหรับทริกเกอร์ S3 -

ตอนนี้เพิ่มรายละเอียดการกำหนดค่าสำหรับทริกเกอร์ S3 เพิ่ม -

ที่นี่คุณต้องเลือกไฟล์ bucket name, event type ที่คุณต้องการเรียกใช้ Lambda คำนำหน้าและรูปแบบตัวกรองหากมีและ Add ทริกเกอร์
การเพิ่มรหัสใน Lambda
ตอนนี้เราควรมุ่งเน้นไปที่โค้ดแลมบ์ดาที่จะเขียน ในการเพิ่มโค้ดใน aws lambda มีสามตัวเลือก -
- ใช้ตัวแก้ไขแบบอินไลน์
- ใช้ไฟล์. zip
- อัปโหลดไฟล์จาก Amazon S3
มันแสดงในภาพหน้าจอด้านล่าง -

ให้เราคุยรายละเอียดแต่ละเรื่อง
Using the inline editor
โปรแกรมแก้ไขโค้ดอินไลน์ที่คุณสามารถเขียนโค้ดได้มีดังนี้ -

คุณสามารถเขียนโค้ดของคุณได้โดยเลือกภาษาที่คุณต้องการ คุณสามารถเลือกรันไทม์ได้อีกครั้งที่นี่
สังเกตภาพหน้าจอต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ต้องเขียนโค้ด index.js.Handler. รายละเอียดจะแตกต่างกันไปตามรันไทม์ สำหรับnodejs, มันคือ filename.export function ซึ่งตอนนี้ index.lambda handler.
Upload a .ZIP file
ก่อนอื่นคุณสามารถเขียนรหัสบีบอัดและอัปโหลดไฟล์ zip ได้โดยเลือก Upload a .ZIP file.
Upload a file from Amazon S3
คุณสามารถอัปโหลดไฟล์ในถัง S3 และเลือกตัวเลือก Upload a file from Amazon S3.
โปรดทราบว่าสำหรับ .ZIP และ S3 จะไม่สามารถเปลี่ยนรันไทม์ได้
ตัวแปรสภาพแวดล้อม
พวกเขาใช้คู่ค่าคีย์และแชร์ด้วยรหัส AWS Lambda เราสามารถใช้ตัวแปรสภาพแวดล้อมใน AWS Lambda เพื่อจัดเก็บรายละเอียดการเชื่อมต่อฐานข้อมูลรายละเอียดไฟล์เพื่อจัดเก็บเอาต์พุตรายละเอียดไฟล์บันทึกเป็นต้น

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

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

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

เครือข่าย
สิ่งนี้ช่วยให้คุณสามารถเลือก VPC ซึ่งจะช่วยให้คุณเข้าถึงฟังก์ชัน Lambda จาก VPC โดยค่าเริ่มต้นจะไม่มีการเลือก VPC

การแก้ไขข้อบกพร่องและการจัดการข้อผิดพลาด
สำหรับการแก้ไขข้อบกพร่องและการจัดการข้อผิดพลาดคุณสามารถเลือกบริการ AWS เพื่อส่งรายละเอียด ตัวเลือกที่มีให้คือNone, SNS และ SQS.

ภาวะพร้อมกัน
สิ่งนี้ช่วยให้คุณสามารถจัดสรรขีด จำกัด เฉพาะของการดำเนินการพร้อมกันที่อนุญาตสำหรับฟังก์ชันนี้

การตรวจสอบและการปฏิบัติตามข้อกำหนด
ประกอบด้วยบันทึกที่จัดการด้วยความช่วยเหลือของ AWS CloudTrail

เมื่อเสร็จแล้วคุณต้องบันทึกการเปลี่ยนแปลงโดยใช้ปุ่มบันทึกดังที่แสดงไว้ที่นี่ -

ตอนนี้ถ้าคุณคลิก Testมันจะถามเหตุการณ์ทดสอบ คุณสามารถผ่านเหตุการณ์ทดสอบตัวอย่างได้ดังนี้ -
เหตุการณ์ทดสอบที่สร้างขึ้นดังที่แสดงไว้ที่นี่ -

ตอนนี้บันทึกเหตุการณ์ทดสอบและคลิกปุ่มทดสอบเพื่อดูการทำงานของฟังก์ชัน AWS Lambda -

รหัสสำหรับ index.js มีดังนี้ -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log(event.key1);
console.log(event.key2);
console.log(event.key3);
callback(null, 'Lambda test');
};
โปรดทราบว่าฟังก์ชันการโทรกลับถูกเรียกใช้เมื่อมีข้อผิดพลาดหรือสำเร็จ หากประสบความสำเร็จคุณจะเห็นLambda test จะปรากฏขึ้น
การตรวจสอบ
เลือกแท็บการตรวจสอบเพื่อดูรายละเอียดการดำเนินการของฟังก์ชัน Lambda กราฟแสดงรายละเอียดของเวลาดำเนินการข้อผิดพลาดที่เกิดขึ้นเป็นต้น

คุณยังสามารถดูบันทึกใน Cloudwatch สำหรับสิ่งนี้ไปที่บริการของ AWS และเลือก cloudwatch ตามที่แสดง -

ตอนนี้เลือกบันทึกจากด้านซ้ายและป้อนชื่อฟังก์ชันของคุณในตัวกรอง -
