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

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

Pustaka konteks Lambda menyediakan variabel, metode, dan sifat global berikut.

Variabel global
  • FunctionName – Nama fungsi Lambda.

  • FunctionVersionVersi fungsi.

  • MemoryLimitInMB – Jumlah memori yang dialokasikan untuk fungsi tersebut.

  • LogGroupName – Grup log untuk fungsi.

  • LogStreamName – Aliran log untuk instans fungsi.

Metode konteks
  • Deadline – Mengembalikan tanggal saat waktu pelaksanaan habis, dalam waktu Unix milidetik.

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

  • AwsRequestID – Pengidentifikasi permintaan invokasi.

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

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

Mengakses informasi konteks aktif

Fungsi Lambda memiliki akses ke metadata tentang lingkungan mereka dan permintaan invokasi. Ini dapat diakses di Konteks paket. Jika handler Anda mencakup context.Context sebagai parameter, Lambda akan memasukkan informasi tentang fungsi Anda ke dalam Value properti konteks. Perhatikan bahwa Anda perlu mengimpor pustaka lambdacontext untuk mengakses konten dari context.Context objek.

package main import ( "context" "log" "github.com/aws/aws-lambda-go/lambda" "github.com/aws/aws-lambda-go/lambdacontext" ) func CognitoHandler(ctx context.Context) { lc, _ := lambdacontext.FromContext(ctx) log.Print(lc.Identity.CognitoIdentityPoolID) } func main() { lambda.Start(CognitoHandler) }

Dalam contoh di atas, lc adalah variabel yang digunakan untuk mengkonsumsi informasi bahwa objek konteks ditangkap dan log.Print(lc.Identity.CognitoIdentityPoolID) mencetak informasi itu, dalam hal ini, CognitoIdentityPool ID.

Contoh berikut memperkenalkan cara menggunakan objek konteks untuk memantau berapa lama waktu yang dibutuhkan fungsi Lambda untuk menyelesaikannya. Ini memungkinkan Anda untuk menganalisis ekspektasi kinerja dan menyesuaikan kode fungsi Anda, jika diperlukan.

package main import ( "context" "log" "time" "github.com/aws/aws-lambda-go/lambda" ) func LongRunningHandler(ctx context.Context) (string, error) { deadline, _ := ctx.Deadline() deadline = deadline.Add(-100 * time.Millisecond) timeoutChannel := time.After(time.Until(deadline)) for { select { case <- timeoutChannel: return "Finished before timing out.", nil default: log.Print("hello!") time.Sleep(50 * time.Millisecond) } } } func main() { lambda.Start(LongRunningHandler) }