AWS Lambda - Hàm trong Java
Trong chương này, chúng ta hãy cùng tìm hiểu chi tiết cách tạo một hàm AWS Lambda đơn giản trong Java.
Tạo tệp JAR trong Eclipse
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 Eclipse. Đối với bất kỳ hướng dẫn về cài đặt tương tự, bạn có thể tham khảoEnvironment Setup chương trong hướng dẫn này.
Khi bạn hoàn tất quá trình cài đặt, hãy làm theo các bước được cung cấp tại đây -
Bước 1
Mở IDE Eclipse và tạo một dự án mới với AWS Lambda Java Project. Quan sát ảnh chụp màn hình dưới đây để hiểu rõ hơn -
Bước 2
Khi bạn chọn Next, nó sẽ chuyển hướng bạn đến màn hình hiển thị bên dưới -
Bước 3
Bây giờ, một mã mặc định được tạo cho Loại đầu vào Custom. Khi bạn nhấp vàoFinish nút dự án được tạo như hình dưới đây -
Bước 4
Bây giờ, nhấp chuột phải vào dự án của bạn và xuất nó. Lựa chọnJava / JAR tập tin từ Export thuật sĩ và nhấp chuột Next.
Bước 5
Bây giờ, nếu bạn nhấp vào Next, bạn sẽ được nhắc lưu tệp trong thư mục đích sẽ được hỏi khi bạn nhấp vào tiếp theo.
Sau khi tệp được lưu, hãy quay lại Bảng điều khiển AWS và tạo hàm AWS Lambda cho Java.
Bước 6
Bây giờ, tải lên .jar tệp mà chúng tôi đã tạo bằng cách sử dụng Upload như được hiển thị trong ảnh chụp màn hình dưới đây -
Chi tiết về trình xử lý cho Java
Handler Là package name và class name. Hãy xem ví dụ sau để hiểu chi tiết về trình xử lý:
Thí dụ
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
Quan sát rằng từ đoạn mã trên, trình xử lý sẽ com.amazonaws.lambda.demo.LambdaFunctionHandler
Bây giờ, chúng ta hãy kiểm tra các thay đổi và xem kết quả -
Đối tượng ngữ cảnh trong Java
Tương tác với AWS Lambda thực thi được thực hiện bằng cách sử dụng ngữ cảnh. Nó cung cấp các phương thức sau để được sử dụng bên trong Java:
Sr.No | Phương pháp và mô tả ngữ cảnh |
---|---|
1 | getMemoryLimitInMB() điều này sẽ cung cấp giới hạn bộ nhớ mà bạn đã chỉ định trong khi tạo hàm lambda. |
2 | getFunctionName() điều này sẽ cung cấp tên của hàm lambda. |
3 | getFunctionVersion() điều này sẽ cung cấp cho phiên bản của hàm lambda đang chạy. |
4 | getInvokedFunctionArn() điều này sẽ cung cấp cho ARN được sử dụng để gọi hàm. |
5 | getAwsRequestId() điều này sẽ cung cấp id yêu cầu aws. Id này được tạo cho hàm lambda và nó là duy nhất. Id có thể được sử dụng với hỗ trợ aws nếu bạn gặp bất kỳ vấn đề nào. |
6 | getLogGroupName() điều này sẽ cung cấp cho tên nhóm aws cloudwatch được liên kết với hàm aws lambda được tạo. Nó sẽ vô hiệu nếu người dùng iam không có quyền ghi nhật ký đồng hồ trên đám mây. |
7 | getClientContext() điều này sẽ cung cấp thông tin chi tiết về ứng dụng và thiết bị khi được sử dụng với sdk di động aws. Nó sẽ cung cấp các chi tiết như tên và mã phiên bản, id khách hàng, tiêu đề, tên gói ứng dụng. Nó có thể là null. |
số 8 | getIdentity() điều này sẽ cung cấp thông tin chi tiết về nhận dạng của amazon khi được sử dụng với sdk di động aws. Nó có thể là null. |
9 | getRemainingTimeInMillis() điều này sẽ cung cấp thời gian thực thi còn lại tính bằng mili giây khi hàm bị kết thúc sau thời gian chờ được chỉ định. |
10 | getLogger() điều này sẽ cung cấp cho trình ghi nhật ký lambda được liên kết với đối tượng ngữ cảnh. |
Bây giờ, chúng ta hãy cập nhật mã đã cho ở trên và quan sát kết quả cho một số phương thức được liệt kê ở trên. Hãy quan sát mã Ví dụ dưới đây để hiểu rõ hơn -
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
System.out.println("AWS Lambda function name: " + context.getFunctionName());
System.out.println("Memory Allocated: " + context.getMemoryLimitInMB());
System.out.println("Time remaining in milliseconds: " + context.getRemainingTimeInMillis());
System.out.println("Cloudwatch group name " + context.getLogGroupName());
System.out.println("AWS Lambda Request Id " + context.getAwsRequestId());
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Khi bạn chạy mã được đưa ra ở trên, bạn có thể tìm thấy kết quả như được cung cấp bên dưới:
Nhật ký cho ngữ cảnh
Bạn có thể quan sát đầu ra sau đây khi bạn đang xem đầu ra nhật ký của mình:
Bộ nhớ được cấp cho hàm Lambda là 512MB. Thời gian được phân bổ là 25 giây. Thời gian còn lại như hiển thị ở trên là 24961, tính bằng mili giây. Vì vậy, 25000 - 24961 tương đương với 39 mili giây được sử dụng để thực thi hàm Lambda. Lưu ý rằng tên nhóm Cloudwatch và id yêu cầu cũng được hiển thị như hình trên.
Lưu ý rằng chúng tôi đã sử dụng lệnh sau để in nhật ký trong Java:
System.out.println (“log message”)
Điều tương tự cũng có trong CloudWatch. Đối với điều này, hãy chuyển đến dịch vụ AWS, chọnCloudWatchservices và bấm vào Logs.
Bây giờ, nếu bạn chọn hàm Lambda, nó sẽ hiển thị ngày nhật ký như hình dưới đây -
Đăng nhập Java
Bạn cũng có thể sử dụng Lambdalogger trong Java để ghi dữ liệu. Quan sát ví dụ sau cho thấy điều tương tự -
Thí dụ
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("Input: " + input);
logger.log("AWS Lambda function name: " + context.getFunctionName()+"\n");
logger.log("Memory Allocated: " + context.getMemoryLimitInMB()+"\n");
logger.log("Time remaining in milliseconds: " + context.getRemainingTimeInMillis()+"\n");
logger.log("Cloudwatch group name " + context.getLogGroupName()+"\n");
logger.log("AWS Lambda Request Id " + context.getAwsRequestId()+"\n");
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Đoạn mã hiển thị ở trên sẽ cung cấp cho bạn kết quả sau:
Đầu ra trong CloudWatch sẽ như hình dưới đây:
Xử lý lỗi trong Java cho Hàm Lambda
Phần này sẽ giải thích cách xử lý lỗi trong Java cho hàm Lambda. Quan sát đoạn mã sau đây cho thấy giống nhau:
package com.amazonaws.lambda.errorhandling;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
throw new RuntimeException("Error from aws lambda");
}
}
Lưu ý rằng chi tiết lỗi được hiển thị trong json định dạng với errorMessage Error from AWS Lambda. Ngoài ra,ErrorType và stackTrace cung cấp thêm chi tiết về lỗi.
Đầu ra và đầu ra nhật ký tương ứng của mã được đưa ra ở trên sẽ được hiển thị trong ảnh chụp màn hình sau được đưa ra bên dưới: