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, contextcall 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: