AWS Lambda - ฟังก์ชันใน Python
ในบทนี้เราจะสร้างฟังก์ชัน AWS Lambda แบบง่ายใน Python และทำความเข้าใจแนวคิดการทำงานดังต่อไปนี้
ก่อนที่จะดำเนินการสร้างฟังก์ชัน Lambda ใน AWS เราต้องการการสนับสนุนชุดเครื่องมือ AWS สำหรับ Python เพื่อจุดประสงค์นี้ให้ทำตามขั้นตอนด้านล่างและสังเกตภาพหน้าจอที่แนบมา -
ขั้นตอนที่ 1
เข้าสู่ระบบคอนโซล AWS และสร้างฟังก์ชัน Lambda และเลือกภาษาเป็น Python
ขั้นตอนที่ 2
ตอนนี้คลิก Create functionและป้อนรายละเอียดสำหรับการสร้าง AWS Lambda แบบง่ายใน Python รหัสนี้ส่งคืนข้อความHello from Lambda using Python และมีลักษณะดังที่แสดงไว้ที่นี่ -
ขั้นตอนที่ 3
ตอนนี้บันทึกการเปลี่ยนแปลงและทดสอบรหัสเพื่อดูผลลัพธ์ คุณควรเห็นผลลัพธ์และบันทึกต่อไปนี้เมื่อคุณทดสอบในคอนโซล AWS โดยใช้ปุ่มทดสอบจาก UI
ขั้นตอนที่ 4
ตอนนี้คุณสามารถเขียนโค้ดภายในโปรแกรมแก้ไขหรือ IDE สำหรับ Python ที่นี่เรากำลังใช้รหัส Visual Studio สำหรับเขียนโค้ด คุณควรซิปไฟล์ในภายหลังและอัปโหลดในคอนโซล AWS
ที่นี่เราได้ซิปโค้ดและใช้ AWS console
ขั้นตอนที่ 5
ตอนนี้เลือก Upload a .ZIP file ตัวเลือกที่แสดงด้านล่าง -
รายละเอียดตัวจัดการสำหรับ Python
โปรดทราบว่าตัวจัดการจะต้องเป็นชื่อของไฟล์ตามด้วยชื่อของฟังก์ชัน ในกรณีข้างต้นชื่อไฟล์ของเราคือhellopython.py และชื่อของฟังก์ชันคือ my_handler; ดังนั้นตัวจัดการจะเป็น hellopython.my_handler.
เมื่ออัปโหลดเสร็จสิ้นและบันทึกการเปลี่ยนแปลงแล้วจะแสดงรายละเอียดของไฟล์ zip ในตัวแก้ไขออนไลน์ในคอนโซล AWS Lambda ตอนนี้ให้เราทดสอบโค้ดเพื่อดูผลลัพธ์และบันทึก
ตอนนี้ให้เราเข้าใจรายละเอียดของฟังก์ชัน Lambda โดยใช้โค้ดตัวอย่างต่อไปนี้ -
def my_handler(event, context):
return "aws lambda in python using zip file"
ในโค้ดด้านบนชื่อฟังก์ชัน my_handler มี 2 พารามิเตอร์เหตุการณ์และบริบท
วัตถุบริบทใน Python
วัตถุบริบทให้รายละเอียดเช่นชื่อของฟังก์ชัน Lambda เวลาที่เหลือเป็นมิลลิวินาทีรหัสคำขอชื่อกลุ่มนาฬิการะบบคลาวด์รายละเอียดการหมดเวลาเป็นต้น
วิธีการและแอตทริบิวต์ที่มีอยู่ในวัตถุบริบทแสดงในตารางด้านล่าง -
ซีเนียร์ No | ชื่อวิธีการและคำอธิบาย |
---|---|
1 | get_remaining_time_in_millis() วิธีนี้ให้เวลาที่เหลืออยู่ในหน่วยมิลลิวินาทีจนกว่าฟังก์ชันแลมบ์ดาจะยุติฟังก์ชัน |
ซีเนียร์ No | คุณสมบัติและคำอธิบาย |
---|---|
1 | function_name สิ่งนี้ให้ชื่อฟังก์ชัน aws lambda |
2 | function_version สิ่งนี้ทำให้เวอร์ชันของฟังก์ชัน aws lambda ดำเนินการ |
3 | invoked_function_arn สิ่งนี้จะให้รายละเอียด ARN |
4 | memory_limit_in_mb แสดงขีด จำกัด หน่วยความจำที่เพิ่มในขณะที่สร้างฟังก์ชันแลมบ์ดา |
5 | aws_request_id สิ่งนี้ให้รหัสคำขอ aws |
6 | og_group_name ซึ่งจะทำให้ชื่อของกลุ่ม cloudwatch |
7 | log_stream_name สิ่งนี้จะให้ชื่อสตรีมบันทึกของ cloudwatch ที่มีการเขียนบันทึก |
8 | identity สิ่งนี้จะให้รายละเอียดเกี่ยวกับ amazon cognito identity provider เมื่อใช้กับ aws mobile sdk รายละเอียดมีดังนี้ -
|
9 | client_context นี่จะแสดงรายละเอียดของแอปพลิเคชันไคลเอนต์เมื่อใช้กับ sdk มือถือ aws รายละเอียดที่ได้รับมีดังนี้ -
|
ให้เราดูตัวอย่างการทำงานใน Python ซึ่งแสดงรายละเอียดบริบท สังเกตรหัสที่ระบุด้านล่าง -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
ผลลัพธ์ที่สอดคล้องกันของรหัสที่แสดงด้านบนแสดงไว้ด้านล่าง -
การบันทึกโดยใช้ Python
ในการบันทึกข้อมูลโดยใช้ Python เราสามารถใช้ฟังก์ชัน print หรือ logger ที่มีอยู่ ให้เราใช้บริบทตัวอย่างข้างต้นและตรวจสอบใน CloudWatch เพื่อดูว่ามีการพิมพ์บันทึกหรือไม่ สังเกตรหัสต่อไปนี้ -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
ผลลัพธ์ของรหัสนี้ใน CloudWatch มีดังที่แสดงด้านล่าง -
ดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจเกี่ยวกับการใช้คนบันทึกเพื่อพิมพ์บันทึกไปยัง CloudWatch -
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
logger.info('Using logger to print messages to cloudwatch logs')
return "aws lambda in python using zip file"
ผลลัพธ์สำหรับสิ่งนี้จะเป็นดังที่แสดงในภาพหน้าจอด้านล่าง -
ข้อผิดพลาดในการจัดการใน Python สำหรับฟังก์ชัน Lambda
ในส่วนนี้ให้เราดูตัวอย่างการทำงานซึ่งแสดงวิธีจัดการข้อผิดพลาดใน Python สังเกตชิ้นส่วนของรหัสที่ให้ไว้ที่นี่ -
def error_handler(event, context):
raise Exception('Error Occured!')
การแสดงบันทึกดังแสดงในภาพที่นี่ -