Menggunakan objek konteks Lambda untuk mengambil informasi fungsi C # - 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 C #

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

Properti konteks
  • FunctionName – Nama fungsi Lambda.

  • FunctionVersionVersi fungsi.

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

  • MemoryLimitInMB – Jumlah memori yang dialokasikan untuk fungsi tersebut.

  • AwsRequestId – Pengidentifikasi permintaan invokasi.

  • LogGroupName – Grup log untuk fungsi.

  • LogStreamName – Aliran log untuk instans fungsi.

  • RemainingTime (TimeSpan) – Jumlah milidetik yang tersisa sebelum waktu eksekusi habis.

  • Identity – (aplikasi seluler) Informasi tentang identitas Amazon Cognito yang mengesahkan permintaan.

  • ClientContext – (aplikasi seluler) Konteks klien yang disediakan untuk Lambda oleh aplikasi klien.

  • Logger Objek logger untuk fungsi.

Anda dapat menggunakan informasi dalam ILambdaContext objek untuk menampilkan informasi tentang pemanggilan fungsi Anda untuk tujuan pemantauan. Kode berikut memberikan contoh bagaimana menambahkan informasi konteks ke kerangka logging terstruktur. Dalam contoh ini, fungsi AwsRequestId menambah output log. Fungsi ini juga menggunakan RemainingTime properti untuk membatalkan tugas dalam penerbangan jika batas waktu fungsi Lambda akan tercapai.

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace GetProductHandler; public class Function { private readonly IDatabaseRepository _repo; public Function() { this._repo = new DatabaseRepository(); } public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) { Logger.AppendKey("AwsRequestId", context.AwsRequestId); var id = request.PathParameters["id"]; using var cts = new CancellationTokenSource(); try { cts.CancelAfter(context.RemainingTime.Add(TimeSpan.FromSeconds(-1))); var databaseRecord = await this._repo.GetById(id, cts.Token); return new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = JsonSerializer.Serialize(databaseRecord) }; } finally { cts.Cancel(); return new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.InternalServerError, Body = JsonSerializer.Serialize(databaseRecord) }; } } }