Menggunakan objek konteks Lambda untuk mengambil informasi fungsi Java - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan objek konteks Lambda untuk mengambil informasi fungsi Java

Saat Lambda menjalankan fungsi Anda, ia meneruskan objek konteks ke handler. Objek ini menyediakan metode dan properti yang memberikan informasi tentang lingkungan invokasi, fungsi, dan eksekusi.

Metode konteks
  • getRemainingTimeInMillis() – Mengembalikan jumlah milidetik yang tersisa sebelum waktu eksekusi habis.

  • getFunctionName() – Mengembalikan nama fungsi Lambda.

  • getFunctionVersion() – Mengembalikan versi fungsi.

  • getInvokedFunctionArn()— Mengembalikan Amazon Resource Name (ARN) yang digunakan untuk memanggil fungsi. Menunjukkan jika pemicu menyebutkan nomor versi atau alias.

  • getMemoryLimitInMB() – Mengembalikan jumlah memori yang dialokasikan untuk fungsi tersebut.

  • getAwsRequestId() – Mengembalikan pengidentifikasi permintaan invokasi.

  • getLogGroupName() – Mengembalikan grup log untuk fungsi.

  • getLogStreamName() – Mengembalikan aliran log untuk instans fungsi.

  • getIdentity() – (aplikasi seluler) Mengembalikan informasi tentang Amazon Cognito yang mengesahkan permintaan.

  • getClientContext() – (aplikasi seluler) Mengembalikan konteks klien yang disediakan untuk Lambda oleh aplikasi klien.

  • getLogger() – Mengembalikan objek logger untuk fungsi.

Contoh berikut menunjukkan fungsi yang menggunakan objek konteks untuk mengakses logger Lambda.

contoh Handler.java
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import java.util.Map; // Handler value: example.Handler public class Handler implements RequestHandler<Map<String,String>, Void>{ @Override public Void handleRequest(Map<String,String> event, Context context) { LambdaLogger logger = context.getLogger(); logger.log("EVENT TYPE: " + event.getClass()); return null; } }

Fungsi mencatat jenis kelas dari acara yang masuk sebelum kembalinull.

contoh output log
EVENT TYPE: class java.util.LinkedHashMap

Antarmuka untuk objek konteks tersedia di aws-lambda-java-coreperpustakaan. Anda dapat menerapkan antarmuka ini untuk membuat kelas konteks untuk pengujian. Contoh berikut menunjukkan kelas konteks yang mengembalikan nilai tiruan untuk sebagian besar properti dan logger uji kerja.

contoh TestContextsrc/test/java/contoh/ .java
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.CognitoIdentity; import com.amazonaws.services.lambda.runtime.ClientContext; import com.amazonaws.services.lambda.runtime.LambdaLogger; public class TestContext implements Context{ public TestContext() {} public String getAwsRequestId(){ return new String("495b12a8-xmpl-4eca-8168-160484189f99"); } public String getLogGroupName(){ return new String("/aws/lambda/my-function"); } public String getLogStreamName(){ return new String("2020/02/26/[$LATEST]704f8dxmpla04097b9134246b8438f1a"); } public String getFunctionName(){ return new String("my-function"); } public String getFunctionVersion(){ return new String("$LATEST"); } public String getInvokedFunctionArn(){ return new String("arn:aws:lambda:us-east-2:123456789012:function:my-function"); } public CognitoIdentity getIdentity(){ return null; } public ClientContext getClientContext(){ return null; } public int getRemainingTimeInMillis(){ return 300000; } public int getMemoryLimitInMB(){ return 512; } public LambdaLogger getLogger(){ return new TestLogger(); } }

Untuk informasi lebih lanjut tentang log, lihat Log dan pantau fungsi Java Lambda.

Konteks dalam aplikasi sampel

GitHub Repositori untuk panduan ini mencakup contoh aplikasi yang menunjukkan penggunaan objek konteks. Setiap contoh aplikasi menyertakan skrip untuk penyebaran dan pembersihan yang mudah, templat AWS Serverless Application Model (AWS SAM), dan sumber daya pendukung.

Sampel aplikasi Lambda di Java
  • java17-examples - Fungsi Java yang menunjukkan bagaimana menggunakan catatan Java untuk mewakili objek data peristiwa masukan.

  • java-basic - Kumpulan fungsi Java minimal dengan pengujian unit dan konfigurasi logging variabel.

  • java-events - Kumpulan fungsi Java yang berisi kode kerangka untuk cara menangani peristiwa dari berbagai layanan seperti Amazon GatewayAPI, Amazon, dan Amazon SQS Kinesis. Fungsi-fungsi ini menggunakan versi terbaru dari aws-lambda-java-eventsperpustakaan (3.0.0 dan yang lebih baru). Contoh-contoh ini tidak memerlukan ketergantungan AWS SDK sebagai.

  • s3-java — Fungsi Java yang memproses peristiwa notifikasi dari Amazon S3 dan menggunakan Java Class Library JCL () untuk membuat thumbnail dari file gambar yang diunggah.

  • Gunakan API Gateway untuk menjalankan fungsi Lambda — Fungsi Java yang memindai tabel Amazon DynamoDB yang berisi informasi karyawan. Kemudian menggunakan Amazon Simple Notification Service untuk mengirim pesan teks kepada karyawan yang merayakan ulang tahun kerja mereka. Contoh ini menggunakan API Gateway untuk memanggil fungsi.