AWS Lambda - Hàm trong Python
Trong chương này, chúng ta sẽ tạo một hàm AWS Lambda đơn giản bằng Python và hiểu các khái niệm hoạt động của nó chi tiết sau đây.
Trước khi tiến hành tạo một hàm Lambda trong AWS, chúng ta cần hỗ trợ bộ công cụ AWS cho Python. Với mục đích này, hãy làm theo các bước dưới đây và quan sát các ảnh chụp màn hình tương ứng được đính kèm -
Bước 1
Đăng nhập vào bảng điều khiển AWS và tạo hàm Lambda và chọn ngôn ngữ là Python.
Bước 2
Bây giờ, hãy nhấp vào Create functionvà nhập các chi tiết để tạo AWS Lambda đơn giản bằng Python. Mã này trả về tin nhắnHello from Lambda using Python và trông như được hiển thị ở đây -
Bước 3
Bây giờ, hãy lưu các thay đổi và kiểm tra mã để xem kết quả. Bạn sẽ thấy kết quả và nhật ký sau khi kiểm tra nó trong bảng điều khiển AWS bằng nút kiểm tra từ giao diện người dùng.
Bước 4
Bây giờ, bạn có thể viết mã bên trong bất kỳ trình soạn thảo nào hoặc IDE cho Python. Ở đây, chúng tôi đang sử dụng mã studio trực quan để viết mã. Sau đó, bạn nên nén tệp và tải lên trong bảng điều khiển AWS.
Ở đây, chúng tôi đã nén mã và sử dụng bảng điều khiển AWS.
Bước 5
Bây giờ, hãy chọn Upload a .ZIP file tùy chọn như hình dưới đây -
Chi tiết về trình xử lý cho Python
Lưu ý rằng trình xử lý phải là tên của tệp, theo sau là tên của hàm. Trong trường hợp trên, tên tệp của chúng tôi làhellopython.py và tên của chức năng là my_handler; vì vậy người xử lý sẽ hellopython.my_handler.
Khi quá trình tải lên hoàn tất và các thay đổi được lưu, nó thực sự hiển thị chi tiết của tệp zip trong trình chỉnh sửa trực tuyến trong bảng điều khiển AWS Lambda. Bây giờ, chúng ta hãy kiểm tra mã để xem đầu ra và nhật ký.
Bây giờ, chúng ta hãy hiểu chi tiết về hàm Lambda bằng cách sử dụng mã mẫu sau:
def my_handler(event, context):
return "aws lambda in python using zip file"
Trong đoạn mã trên, tên hàm my_handler có 2 tham số, sự kiện và ngữ cảnh.
Đối tượng ngữ cảnh trong Python
Đối tượng ngữ cảnh cung cấp các chi tiết như tên của hàm Lambda, thời gian còn lại tính bằng mili giây, id yêu cầu, tên nhóm đồng hồ trên đám mây, chi tiết thời gian chờ, v.v.
Các phương thức và thuộc tính có sẵn trên đối tượng ngữ cảnh được hiển thị trong bảng dưới đây:
Sr.No | Tên & Mô tả phương pháp |
---|---|
1 | get_remaining_time_in_millis() Phương thức này cung cấp thời gian còn lại tính bằng mili giây cho đến khi hàm lambda kết thúc hàm |
Sr.No | Thuộc tính & Mô tả |
---|---|
1 | function_name Điều này cung cấp cho tên hàm aws lambda |
2 | function_version Điều này cung cấp cho phiên bản của hàm aws lambda đang thực thi |
3 | invoked_function_arn Điều này sẽ cung cấp thông tin chi tiết về ARN. |
4 | memory_limit_in_mb Điều này cho thấy giới hạn bộ nhớ được thêm vào khi tạo hàm lambda |
5 | aws_request_id Điều này cung cấp id yêu cầu aws. |
6 | og_group_name Điều này sẽ cung cấp tên của tên nhóm đồng hồ đám mây |
7 | log_stream_name Thao tác này sẽ cung cấp tên của tên luồng nhật ký trên cloudwatch nơi các nhật ký được viết. |
số 8 | identity Điều này sẽ cung cấp thông tin chi tiết về nhà cung cấp nhận dạng nhận dạng amazon khi được sử dụng với sdk di động aws. Thông tin chi tiết được đưa ra như sau:
|
9 | client_context Điều này sẽ chi tiết về ứng dụng khách khi được sử dụng với sdk di động aws. Các chi tiết được đưa ra như sau:
|
Hãy để chúng tôi xem một ví dụ làm việc bằng Python xuất ra các chi tiết ngữ cảnh. Hãy quan sát đoạn mã dưới đây -
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"
Đầu ra tương ứng của mã hiển thị ở trên được đưa ra dưới đây:
Ghi nhật ký bằng Python
Để ghi thông tin bằng Python, chúng ta có thể sử dụng chức năng in hoặc ghi có sẵn. Hãy để chúng tôi sử dụng ví dụ ở trên về ngữ cảnh và kiểm tra trongCloudWatch để xem liệu các bản ghi đã được in chưa. Quan sát đoạn mã sau:
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"
Đầu ra của mã này trong CloudWatch như được hiển thị bên dưới:
Quan sát ví dụ sau để hiểu về cách sử dụng trình ghi nhật ký để in nhật ký lên 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"
Đầu ra cho điều này sẽ được hiển thị trong ảnh chụp màn hình dưới đây -
Xử lý lỗi trong Python cho hàm Lambda
Trong phần này, chúng ta hãy xem một ví dụ làm việc cho thấy cách xử lý lỗi trong Python. Quan sát đoạn mã được đưa ra ở đây -
def error_handler(event, context):
raise Exception('Error Occured!')
Màn hình hiển thị nhật ký như trong hình ảnh ở đây -