AWS Lambda - Java'da İşlev
Bu bölümde, Java'da basit bir AWS Lambda işlevinin nasıl oluşturulacağını ayrıntılı olarak anlayalım.
Eclipse'de JAR dosyası oluşturma
AWS'de lambda işlevi oluşturmaya geçmeden önce Eclipse için AWS araç seti desteğine ihtiyacımız var. Aynısının kurulumuyla ilgili herhangi bir rehberlik için,Environment Setup Bu eğitimdeki bölüm.
Kurulumu tamamladığınızda, burada verilen adımları izleyin -
Aşama 1
Eclipse IDE'yi açın ve yeni bir proje oluşturun AWS Lambda Java Project. Daha iyi anlamak için aşağıda verilen ekran görüntüsüne bakın -
Adım 2
Seçtikten sonra Next, sizi aşağıda gösterilen ekrana yönlendirecektir -
Aşama 3
Şimdi, Giriş Türü için varsayılan bir kod oluşturulur Custom. TıkladığınızdaFinish düğmesi aşağıda gösterildiği gibi proje oluşturulur -
4. adım
Şimdi, projenize sağ tıklayın ve dışa aktarın. SeçinizJava / JAR dosyadan Export sihirbaz ve tıklama Next.
Adım 5
Şimdi, tıklarsan Next, dosyayı hedef klasöre kaydetmeniz istenecek ve bir sonraki tıkladığınızda sorulacaktır.
Dosya kaydedildikten sonra AWS Konsolu'na geri dönün ve Java için AWS Lambda işlevini oluşturun.
6. Adım
Şimdi yükleyin .jar kullanarak oluşturduğumuz dosya Upload düğmesi aşağıda verilen ekran görüntüsünde gösterildiği gibi -
Java için İşleyici Ayrıntıları
Handler dır-dir package name ve class name. İşleyiciyi ayrıntılı olarak anlamak için aşağıdaki örneğe bakın -
Misal
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
Yukarıdaki koddan, işleyicinin com.amazonaws.lambda.demo.LambdaFunctionHandler
Şimdi değişiklikleri test edelim ve çıktıyı görelim -
Java'da Bağlam Nesnesi
AWS Lambda yürütme ile etkileşim, bağlam kullanılarak yapılır. Java içinde kullanılacak aşağıdaki yöntemleri sağlar -
Sr.No | Bağlam Yöntemleri ve Açıklama |
---|---|
1 | getMemoryLimitInMB() bu, lambda işlevini oluştururken belirlediğiniz bellek sınırını verecektir. |
2 | getFunctionName() bu, lambda işlevinin adını verecektir. |
3 | getFunctionVersion() bu, çalışan lambda işlevinin sürümünü verecektir. |
4 | getInvokedFunctionArn() bu, işlevi çağırmak için kullanılan ARN'yi verecektir. |
5 | getAwsRequestId() bu, aws istek kimliğini verecektir. Bu kimlik lambda işlevi için oluşturulur ve benzersizdir. Kimlik, herhangi bir sorunla karşılaşırsanız aws desteği ile birlikte kullanılabilir. |
6 | getLogGroupName() bu, oluşturulan aws lambda işlevi ile bağlantılı aws cloudwatch grup adını verecektir. İam kullanıcısının cloudwatch günlüğe kaydetme izni yoksa boş olacaktır. |
7 | getClientContext() bu, aws mobile sdk ile birlikte kullanıldığında uygulama ve cihaz hakkında ayrıntılı bilgi verecektir. Sürüm adı ve kodu, müşteri kimliği, başlık, uygulama paketi adı gibi ayrıntıları verecektir. Boş olabilir. |
8 | getIdentity() bu, aws mobile sdk ile kullanıldığında amazon cognito kimliği hakkında ayrıntılar verecektir. Boş olabilir. |
9 | getRemainingTimeInMillis() bu, belirtilen zaman aşımından sonra işlev sonlandırıldığında kalan süreyi milisaniye cinsinden verecektir. |
10 | getLogger() bu, bağlam nesnesiyle bağlantılı lambda kaydediciyi verecektir. |
Şimdi yukarıda verilen kodu güncelleyelim ve yukarıda listelenen yöntemlerden bazıları için çıktıyı gözlemleyelim. Daha iyi anlamak için aşağıda verilen Örnek kodu inceleyin -
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!";
}
}
Yukarıda verilen kodu çalıştırdıktan sonra, çıktıyı aşağıda verilen şekilde bulabilirsiniz -
Bağlam için günlükler
Günlük çıktınızı görüntülerken aşağıdaki çıktıyı gözlemleyebilirsiniz -
Lambda işlevi için ayrılan bellek 512MB'dir. Ayrılan süre 25 saniyedir. Yukarıda gösterildiği gibi kalan süre milisaniye cinsinden 24961'dir. Dolayısıyla, Lambda işlevinin yürütülmesi için 39 milisaniyeye eşit olan 25000 - 24961 kullanılır. Cloudwatch grup adı ve istek kimliğinin de yukarıda gösterildiği gibi görüntülendiğini unutmayın.
Java'da günlükleri yazdırmak için aşağıdaki komutu kullandığımızı unutmayın -
System.out.println (“log message”)
Aynısı CloudWatch'ta da mevcuttur. Bunun için AWS hizmetlerine gidin, seçinCloudWatchservices ve tıkla Logs.
Şimdi, Lambda işlevini seçerseniz, günlükleri aşağıda gösterildiği gibi tarih bilgisine göre gösterecektir -
Java'da oturum açma
Verileri günlüğe kaydetmek için Java'daki Lambdalogger'ı da kullanabilirsiniz. Aynı şeyi gösteren aşağıdaki örneği inceleyin -
Misal
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!";
}
}
Yukarıda gösterilen kod size şu çıktıyı verecektir -
CloudWatch'taki çıktı aşağıda gösterildiği gibi olacaktır -
Lambda İşlevi için Java'da hata işleme
Bu bölüm, Lambda işlevi için Java'daki hataların nasıl işleneceğini açıklayacaktır. Aynı şeyi gösteren aşağıdaki kodu inceleyin -
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");
}
}
Hata ayrıntılarının görüntülendiğini unutmayın. json errorMessage ile biçimlendirme Error from AWS Lambda. AyrıcaErrorType ve stackTrace hata hakkında daha fazla ayrıntı verir.
Yukarıda verilen kodun çıktısı ve ilgili günlük çıktısı, aşağıda verilen aşağıdaki ekran görüntülerinde gösterildiği gibi olacaktır -