Khi mã của bạn gây ra lỗi, Lambda sẽ tạo ra biểu diễn JSON của lỗi. Tài liệu lỗi này xuất hiện trong nhật ký gọi và, cho các yêu cầu đồng bộ, trong đầu ra.
Trang này mô tả cách xem các lỗi gọi chức năng Lambda cho thời gian chạy Python bằng bảng điều khiển Lambda và AWS CLI.
Phần
- Làm thế nào nó hoạt động
- Sử dụng bảng điều khiển Lambda
- Sử dụng giao diện dòng lệnh AWS (AWS CLI)
- Xử lý lỗi trong các dịch vụ AWS khác
- Ví dụ lỗi
- Ứng dụng mẫu
- Cái gì tiếp theo?
Làm thế nào nó hoạt động
Sử dụng bảng điều khiển Lambda
Sử dụng giao diện dòng lệnh AWS (AWS CLI)
Xử lý lỗi trong các dịch vụ AWS khác
Ví dụ lỗi
2xxỨng dụng mẫu
{ "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }3Cái gì tiếp theo?
{ "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }7Khi bạn gọi chức năng Lambda, Lambda nhận được yêu cầu gọi và xác thực các quyền trong vai trò thực hiện của bạn, xác minh rằng tài liệu sự kiện là tài liệu JSON hợp lệ và kiểm tra các giá trị tham số.
Nếu yêu cầu chuyển xác thực, Lambda sẽ gửi yêu cầu đến một thể hiện chức năng. Môi trường thời gian chạy Lambda chuyển đổi tài liệu sự kiện thành một đối tượng và chuyển nó cho trình xử lý chức năng của bạn.
Sử dụng bảng điều khiển Lambda
Sử dụng giao diện dòng lệnh AWS (AWS CLI)
Xử lý lỗi trong các dịch vụ AWS khác
Ví dụ lỗiFunctions page of the Lambda console.
Ứng dụng mẫuTest.
Cái gì tiếp theo?Test event, select New event.
Khi bạn gọi chức năng Lambda, Lambda nhận được yêu cầu gọi và xác thực các quyền trong vai trò thực hiện của bạn, xác minh rằng tài liệu sự kiện là tài liệu JSON hợp lệ và kiểm tra các giá trị tham số.Template.
Nếu yêu cầu chuyển xác thực, Lambda sẽ gửi yêu cầu đến một thể hiện chức năng. Môi trường thời gian chạy Lambda chuyển đổi tài liệu sự kiện thành một đối tượng và chuyển nó cho trình xử lý chức năng của bạn.Name, enter a name for the test. In the text entry box, enter the JSON test event.
Nếu Lambda gặp lỗi, nó sẽ trả về một loại ngoại lệ, thông báo và mã trạng thái HTTP cho biết nguyên nhân của lỗi. Máy khách hoặc dịch vụ gọi chức năng Lambda có thể xử lý lỗi theo chương trình hoặc chuyển nó cho người dùng cuối. Hành vi xử lý lỗi chính xác phụ thuộc vào loại ứng dụng, đối tượng và nguồn gốc của lỗi.Save changes.
Danh sách sau đây mô tả phạm vi mã trạng thái bạn có thể nhận được từ Lambda.Test.
Lỗi sê -ri 2xx với tiêu đề { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }0 trong phản hồi cho biết thời gian chạy Lambda hoặc lỗi chức năng. Mã trạng thái sê -ri 2xx chỉ ra rằng Lambda đã chấp nhận yêu cầu, nhưng thay vì mã lỗi, Lambda cho biết lỗi bằng cách bao gồm tiêu đề ____1010 trong phản hồi.Details section.
Sử dụng giao diện dòng lệnh AWS (AWS CLI)
Xử lý lỗi trong các dịch vụ AWS khác
Ví dụ lỗi
Ứng dụng mẫu
Cái gì tiếp theo?
Khi bạn gọi chức năng Lambda, Lambda nhận được yêu cầu gọi và xác thực các quyền trong vai trò thực hiện của bạn, xác minh rằng tài liệu sự kiện là tài liệu JSON hợp lệ và kiểm tra các giá trị tham số.
aws lambda invoke \ --function-name my-function \ --cli-binary-format raw-in-base64-out \ --payload '{"key1": "value1", "key2": "value2", "key3": "value3"}' output.txtNếu yêu cầu chuyển xác thực, Lambda sẽ gửi yêu cầu đến một thể hiện chức năng. Môi trường thời gian chạy Lambda chuyển đổi tài liệu sự kiện thành một đối tượng và chuyển nó cho trình xử lý chức năng của bạn.cli-binary-format option is required if you're using AWS CLI version 2. To make this the default setting, run cat output.txt5. For more information, see AWS CLI supported global command line options.
Nếu Lambda gặp lỗi, nó sẽ trả về một loại ngoại lệ, thông báo và mã trạng thái HTTP cho biết nguyên nhân của lỗi. Máy khách hoặc dịch vụ gọi chức năng Lambda có thể xử lý lỗi theo chương trình hoặc chuyển nó cho người dùng cuối. Hành vi xử lý lỗi chính xác phụ thuộc vào loại ứng dụng, đối tượng và nguồn gốc của lỗi.
{ "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }Danh sách sau đây mô tả phạm vi mã trạng thái bạn có thể nhận được từ Lambda.
cat output.txtLỗi sê -ri 2xx với tiêu đề { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }0 trong phản hồi cho biết thời gian chạy Lambda hoặc lỗi chức năng. Mã trạng thái sê -ri 2xx chỉ ra rằng Lambda đã chấp nhận yêu cầu, nhưng thay vì mã lỗi, Lambda cho biết lỗi bằng cách bao gồm tiêu đề ____1010 trong phản hồi.
{"errorMessage": "'action'", "errorType": "KeyError", "stackTrace": [" File \"/var/task/lambda_function.py\", line 36, in lambda_handler\n result = ACTIONS[event['action']](event['number'])\n"]}Lỗi sê -ri { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }3 cho biết lỗi mà máy khách hoặc dịch vụ gọi có thể khắc phục bằng cách sửa đổi yêu cầu, yêu cầu quyền hoặc bằng cách thử lại yêu cầu. { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }3 Lỗi loạt khác với { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }6 thường chỉ ra lỗi với yêu cầu.
Xử lý lỗi trong các dịch vụ AWS khác
Khi một dịch vụ AWS khác gọi chức năng của bạn, dịch vụ chọn loại gọi và hành vi thử lại. Các dịch vụ AWS có thể gọi chức năng của bạn theo lịch trình, để đáp ứng với sự kiện vòng đời trên tài nguyên hoặc để phục vụ yêu cầu từ người dùng. Một số dịch vụ gọi các chức năng không đồng bộ và để Lambda xử lý các lỗi, trong khi các dịch vụ khác thử lại hoặc chuyển lỗi cho người dùng.
Ví dụ, API Gateway coi tất cả các lỗi gọi và chức năng là lỗi nội bộ. Nếu API Lambda từ chối yêu cầu gọi, API Gateway trả về mã lỗi cat output.txt7. Nếu hàm chạy nhưng trả về lỗi hoặc trả về phản hồi ở định dạng sai, API Gateway trả về mã lỗi 502. Để tùy chỉnh phản hồi lỗi, bạn phải bắt lỗi trong mã và định dạng phản hồi ở định dạng cần thiết.
Chúng tôi khuyên bạn nên sử dụng AWS X-Ray để xác định nguồn lỗi và nguyên nhân của nó. X-quang cho phép bạn tìm ra thành phần nào gặp phải lỗi và xem chi tiết về các lỗi. Ví dụ sau đây cho thấy một lỗi chức năng dẫn đến phản hồi cat output.txt8 từ cổng API.
Để biết thêm thông tin, hãy xem mã Python trong AWS Lambda.
Ví dụ lỗi
Phần sau đây cho thấy các lỗi phổ biến mà bạn có thể nhận được khi tạo, cập nhật hoặc gọi chức năng của bạn bằng cách sử dụng Python Lambda Runtimes.
Ví dụ về thời gian chạy ngoại lệ - Bộ nhập khẩu
{ "errorMessage": "Unable to import module 'lambda_function': Cannot import name '_imaging' from 'PIL' (/var/task/PIL/__init__.py)", "errorType": "Runtime.ImportModuleError" }
Lỗi này là kết quả của việc sử dụng giao diện dòng lệnh AWS (AWS CLI) để tải lên gói triển khai có chứa thư viện C hoặc C ++. Ví dụ, Gối (PIL), Numpy hoặc Thư viện Gandas.Pillow (PIL), numpy, or pandas library.
Chúng tôi khuyên bạn nên sử dụng lệnh xây dựng AWS Sam Cli Sam với tùy chọn cat output.txt9 để tạo gói triển khai của bạn. Sử dụng AWS Sam CLI với tùy chọn này tạo ra một thùng chứa Docker với môi trường giống như Lambda tương thích với Lambda.
Ví dụ Lỗi tuần tự hóa JSON - RunTime.MarshalError
{ "errorMessage": "Unable to marshal response: Object of type AttributeError is not JSON serializable", "errorType": "Runtime.MarshalError" }
Lỗi này có thể là kết quả của cơ chế mã hóa Base64 mà bạn đang sử dụng trong mã chức năng của mình. Ví dụ:
import base64 encrypted_data = base64.b64encode(payload_enc).decode("utf-8")Lỗi này cũng có thể là kết quả của việc không chỉ định tệp .zip của bạn dưới dạng tệp nhị phân khi bạn tạo hoặc cập nhật chức năng của mình. Chúng tôi khuyên bạn nên sử dụng tùy chọn lệnh FileB: // để tải lên gói triển khai của bạn (tệp .zip).
aws lambda create-function --function-name my-function --zip-file fileb://my-deployment-package.zip --handler lambda_function.lambda_handler --runtime python3.8 --role arn:aws:iam::your-account-id:role/lambda-exỨng dụng mẫu
Kho lưu trữ GitHub cho hướng dẫn này bao gồm các ứng dụng mẫu thể hiện việc sử dụng các lỗi. Mỗi ứng dụng mẫu bao gồm các tập lệnh để dễ dàng triển khai và dọn dẹp, mẫu mô hình ứng dụng không cần máy chủ AWS và tài nguyên hỗ trợ.
Mẫu các ứng dụng Lambda trong Python
trống-python-một hàm Python cho thấy việc sử dụng ghi nhật ký, biến môi trường, truy tìm tia X AWS, các lớp, kiểm tra đơn vị và SDK AWS. – A Python function that shows the use of logging, environment variables, AWS X-Ray tracing, layers, unit tests and the AWS SDK.
Cái gì tiếp theo?
Tìm hiểu cách hiển thị các sự kiện ghi nhật ký cho chức năng Lambda của bạn trên chức năng AWS Lambda đăng nhập vào trang Python.