Xây dựng hàm Lambda
Hàm AWS Lambda thực thi một mã khi nó được gọi. Chương này thảo luận chi tiết tất cả các bước liên quan đến vòng đời của hàm AWS Lambda.
Các bước để xây dựng một hàm Lambda
Vòng đời của hàm Lambda bao gồm bốn bước cần thiết:
- Authoring
- Deploying
- Monitoring
- Troubleshooting
Tác giả mã Lambda
Mã hàm AWS Lambda có thể được viết bằng các ngôn ngữ sau:
- NodeJS
- Java,
- Python
- C#
- Go.
Chúng tôi có thể viết mã cho AWS Lambda bằng bảng điều khiển AWS, AWS CLI, từ Eclipse IDE, từ Visual Studio IDE, khuôn khổ không máy chủ, v.v.
Bảng sau đây hiển thị danh sách các ngôn ngữ và các công cụ và IDE khác nhau có thể được sử dụng để viết hàm Lambda:
Ngôn ngữ | IDE để tạo mã Lambda |
---|---|
NodeJS | Bảng điều khiển AWS Lambda Visual Studio IDE |
Java | IDE Eclipse |
Python | Bảng điều khiển AWS Lambda |
C # | Visual Studio IDE .NET lõi |
Đi | Bảng điều khiển AWS Lambda |
Triển khai mã Lambda
Khi bạn quyết định ngôn ngữ bạn muốn viết hàm Lambda, có hai cách để triển khai mã:
- Trực tiếp viết mã trong bảng điều khiển AWS
- Zip hoặc jar các tệp với tất cả các tệp và phụ thuộc
Tuy nhiên, hãy nhớ rằng quyền thích hợp phải được cấp cho tệp zip.
Kiểm tra mã Lambda
Mã Lambda có thể được kiểm tra cho các sự kiện bên trong bảng điều khiển AWS Lambda. Cũng có thể kiểm tra chức năng Lambda từ cli AWS và cli không máy chủ. Bảng điều khiển AWS cũng có dữ liệu sự kiện có thể được sử dụng làm sự kiện mẫu trong khi thử nghiệm chức năng AWS Lambda.
Giám sát chức năng Lambda
Việc giám sát chức năng Lambda có thể được thực hiện bằng AWS CloudWatch. Chúng tôi có thể thêm thông báo nhật ký cần thiết bằng các ngôn ngữ mà chúng tôi chọn và thấy tương tự trong AWS CloudWatch.
Để bắt đầu viết hàm Lambda, cần tuân theo một mẫu. Sau đây là các khái niệm cốt lõi chính cần tuân theo để viết một hàm Lambda:
Người xử lý
Trình xử lý là tên của hàm AWS lambda từ nơi bắt đầu thực thi. Nó xuất hiện trong bảng điều khiển AWS như hình dưới đây -
Lưu ý rằng ở đây chúng tôi đã thay đổi trình xử lý mặc định thành một tên khác và cập nhật tương tự trong Trình xử lý -
Lưu ý rằng cách gọi một trình xử lý khác với các ngôn ngữ được chọn làm thời gian chạy.
Các thông số được chuyển cho trình xử lý
Nếu bạn quan sát hàm xử lý, các tham số được truyền là event, context và call back function như hình dưới đây -
Event tham số có tất cả các chi tiết cho trình kích hoạt được sử dụng.
Contextvề cơ bản tham số quan tâm đến chi tiết thời gian chạy để hàm Lambda thực thi. Chúng ta có thể tương tác với hàm Lambda bằng cách sử dụngcontexttham số. Nó có các chi tiết như thời gian còn lại trước khi AWS Lambda kết thúc một hàm, tức là thời gian chờ được chỉ định trong khi tạo hàm Lambda, tên của hàm Lambda, tên nhóm cloudwatch, chi tiết arn, v.v.
Thí dụ
Hãy để chúng tôi hiểu chi tiết thu được từ đối tượng ngữ cảnh AWS Lambda với sự trợ giúp của ví dụ:
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log("context object details");
console.log(JSON.stringify(context));
callback(null, 'Lambda test');
};
Khi bạn thực thi hàm Lambda được hiển thị ở trên, bạn có thể thấy kết quả sau:
Đầu ra
Các context chi tiết được đưa ra như sau -
{
"callbackWaitsForEmptyEventLoop":true,"logGroupName":"/aws/lambda/myfirstlambdafunction",
"logStreamName":"2018/05/20/[$LATEST]04f17ee4ff7048d5bb1fedffaa807c71","functionName":
"myfirstlambdafunction","memoryLimitInMB":"128","functionVersion":"$LATEST","invokeid":
"c931e21c-5bf3-11e8-acfe-47fdbb39eee9","awsRequestId":"c931e21c-5bf3-11e8-acfe-47fdbb39eee9",
"invokedFunctionArn":"arn:aws:lambda:us-east-1:625297745038:function:myfirstlambdafunction"
}
Quan sát rằng nó có các chi tiết như functionName, memorylimit, requestId, v.v.
Ghi nhật ký
Các nhật ký được thêm vào bên trong hàm Lambda được hiển thị trong AWS CloudWatch khi hàm AWS thực thi. Cú pháp nhật ký sẽ khác nhau tùy theo ngôn ngữ đã chọn. Ví dụ trongnodejs, nó là console.log.
Đây là kết quả bạn có thể thấy trong AWSCloudWatch -
Xử lý lỗi
Hàm AWS Lambda cung cấp một hàm gọi lại được sử dụng để thông báo cho hàm Lambda rằng đã xảy ra lỗi hoặc thành công. Lưu ý rằng ở đây chúng tôi đã sử dụng nodejs làm thời gian chạy. Việc xử lý lỗi sẽ khác nhau tùy theo ngôn ngữ đã chọn.
Hãy quan sát Ví dụ được đưa ra ở đây để hiểu rõ hơn -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
var error = new Error("There is error in code");
callback(error);
};
Đầu ra
Khi bạn kiểm tra mã Lambda, bạn có thể tìm thấy kết quả như hình dưới đây:
Chi tiết nhật ký như sau: