AWS Lambda fungsi login di Ruby - AWS Lambda

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

AWS Lambda fungsi login di Ruby

AWS Lambda secara otomatis memonitor fungsi Lambda atas nama Anda dan mengirim log ke Amazon. CloudWatch Fungsi Lambda Anda dilengkapi dengan grup CloudWatch log Log dan aliran log untuk setiap instance fungsi Anda. Lingkungan runtime Lambda mengirimkan detail tentang setiap invokasi ke pengaliran log, dan menyampaikan log serta output lain dari kode fungsi Anda. Untuk informasi selengkapnya, lihat Menggunakan CloudWatch log Amazon dengan AWS Lambda.

Halaman ini menjelaskan cara menghasilkan keluaran log dari kode fungsi Lambda Anda, atau mengakses log menggunakan AWS Command Line Interface, konsol Lambda, atau konsol. CloudWatch

Membuat fungsi yang mengembalikan log

Untuk menghasilkan log dari kode fungsi, Anda dapat menggunakan pernyataan puts, atau pustaka pencatatan apa pun yang menulis ke stdout atau stderr. Contoh berikut mencatat nilai variabel lingkungan dan objek peristiwa.

contoh lambda_function.rb
# lambda_function.rb def handler(event:, context:) puts "## ENVIRONMENT VARIABLES" puts ENV.to_a puts "## EVENT" puts event.to_a end
contoh format log
START RequestId: 8f507cfc-xmpl-4697-b07a-ac58fc914c95 Version: $LATEST ## ENVIRONMENT VARIABLES environ({'AWS_LAMBDA_LOG_GROUP_NAME': '/aws/lambda/my-function', 'AWS_LAMBDA_LOG_STREAM_NAME': '2020/01/31/[$LATEST]3893xmpl7fac4485b47bb75b671a283c', 'AWS_LAMBDA_FUNCTION_NAME': 'my-function', ...}) ## EVENT {'key': 'value'} END RequestId: 8f507cfc-xmpl-4697-b07a-ac58fc914c95 REPORT RequestId: 8f507cfc-xmpl-4697-b07a-ac58fc914c95 Duration: 15.74 ms Billed Duration: 16 ms Memory Size: 128 MB Max Memory Used: 56 MB Init Duration: 130.49 ms XRAY TraceId: 1-5e34a614-10bdxmplf1fb44f07bc535a1 SegmentId: 07f5xmpl2d1f6f85 Sampled: true

Waktu pengoperasian Ruby melakukan log baris START, END, dan REPORT untuk setiap invokasi. Baris laporan memberikan perincian berikut.

Laporkan bidang data baris
  • RequestId— ID permintaan unik untuk pemanggilan.

  • Durasi – Jumlah waktu yang digunakan oleh metode handler fungsi Anda gunakan untuk memproses peristiwa.

  • Durasi yang Ditagih – Jumlah waktu yang ditagihkan untuk invokasi.

  • Ukuran Memori – Jumlah memori yang dialokasikan untuk fungsi.

  • Memori Maks yang Digunakan – Jumlah memori yang digunakan oleh fungsi.

  • Durasi Init – Untuk permintaan pertama yang dilayani, lama waktu yang diperlukan runtime untuk memuat fungsi dan menjalankan kode di luar metode handler.

  • XRAY TraceId — Untuk permintaan yang dilacak, ID AWS X-Ray jejak.

  • SegmentId— Untuk permintaan yang dilacak, ID segmen X-Ray.

  • Diambil Sampel – Untuk permintaan yang dilacak, hasil pengambilan sampel.

Untuk log yang lebih rinci, gunakan filePustaka logger.

Menggunakan konsol Lambda

Anda dapat menggunakan konsol Lambda untuk melihat output log setelah Anda memanggil fungsi Lambda.

Jika kode Anda dapat diuji dari editor Kode tertanam, Anda akan menemukan log dalam hasil eksekusi. Saat Anda menggunakan fitur pengujian konsol untuk menjalankan fungsi, Anda akan menemukan Keluaran Log di bagian Detail.

Menggunakan CloudWatch konsol

Anda dapat menggunakan CloudWatch konsol Amazon untuk melihat log untuk semua pemanggilan fungsi Lambda.

Untuk melihat log di CloudWatch konsol
  1. Buka halaman Grup log di CloudWatch konsol.

  2. Pilih grup log untuk fungsi Anda (/aws/lambda/your-function-name).

  3. Pilih pengaliran log.

Setiap aliran log sesuai dengan instans fungsi Anda. Pengaliran log muncul saat Anda memperbarui fungsi Lambda dan saat instans tambahan dibuat untuk menangani beberapa invokasi bersamaan. Untuk menemukan log untuk pemanggilan tertentu, kami sarankan untuk menginstrumentasi fungsi Anda dengan. AWS X-Ray X-Ray mencatat detail tentang permintaan dan pengaliran log di jejak.

Menggunakan AWS Command Line Interface (AWS CLI)

AWS CLI Ini adalah alat sumber terbuka yang memungkinkan Anda berinteraksi dengan AWS layanan menggunakan perintah di shell baris perintah Anda. Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:

Anda dapat menggunakan AWS CLI untuk mengambil log untuk invokasi menggunakan opsi perintah --log-type. Respons berisi bidang LogResult yang memuat hingga 4 KB log berkode base64 dari invokasi.

contoh mengambil ID log

Contoh berikut menunjukkan cara mengambil ID log dari LogResult untuk fungsi bernama my-function.

aws lambda invoke --function-name my-function out --log-type Tail

Anda akan melihat output berikut:

{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
contoh mendekode log

Pada prompt perintah yang sama, gunakan utilitas base64 untuk mendekodekan log. Contoh berikut menunjukkan cara mengambil log berkode base64 untuk my-function.

aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode

cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankanaws configure set cli-binary-format raw-in-base64-out. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.

Anda akan melihat output berikut:

START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB

Utilitas base64 tersedia di Linux, macOS, dan Ubuntu pada Windows. Pengguna macOS mungkin harus menggunakan base64 -D.

contoh Skrip get-logs.sh

Pada prompt perintah yang sama, gunakan script berikut untuk mengunduh lima peristiwa log terakhir. Skrip menggunakan sed untuk menghapus kutipan dari file output, dan akan tidur selama 15 detik untuk memberikan waktu agar log tersedia. Output mencakup respons dari Lambda dan output dari perintah get-log-events.

Salin konten dari contoh kode berikut dan simpan dalam direktori proyek Lambda Anda sebagai get-logs.sh.

cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankanaws configure set cli-binary-format raw-in-base64-out. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.

#!/bin/bash aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out sed -i'' -e 's/"//g' out sleep 15 aws logs get-log-events --log-group-name /aws/lambda/my-function --log-stream-name stream1 --limit 5
contoh macOS dan Linux (khusus)

Pada prompt perintah yang sama, pengguna macOS dan Linux mungkin perlu menjalankan perintah berikut untuk memastikan skrip dapat dijalankan.

chmod -R 755 get-logs.sh
contoh mengambil lima log acara terakhir

Pada prompt perintah yang sama, gunakan skrip berikut untuk mendapatkan lima log acara terakhir.

./get-logs.sh

Anda akan melihat output berikut:

{ "StatusCode": 200, "ExecutedVersion": "$LATEST" } { "events": [ { "timestamp": 1559763003171, "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n", "ingestionTime": 1559763003309 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r \"key\": \"value\"\r}\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n", "ingestionTime": 1559763018353 } ], "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795", "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080" }

Menghapus log

Grup log tidak terhapus secara otomatis ketika Anda menghapus suatu fungsi. Untuk menghindari penyimpanan log secara tidak terbatas, hapus kelompok log, atau lakukan konfigurasi periode penyimpanan, yang setelahnya log akan dihapus secara otomatis.

Pustaka logger

Pustaka logger Ruby mengembalikan log yang disederhanakan yang mudah dibaca. Gunakan utilitas logger untuk menampilkan informasi rinci, pesan, dan kode kesalahan yang terkait dengan fungsi Anda.

# lambda_function.rb require 'logger' def handler(event:, context:) logger = Logger.new($stdout) logger.info('## ENVIRONMENT VARIABLES') logger.info(ENV.to_a) logger.info('## EVENT') logger.info(event) event.to_a end

Output dari logger mencakup tingkat log, stempel waktu, dan ID permintaan.

START RequestId: 1c8df7d3-xmpl-46da-9778-518e6eca8125 Version: $LATEST [INFO] 2020-01-31T22:12:58.534Z 1c8df7d3-xmpl-46da-9778-518e6eca8125 ## ENVIRONMENT VARIABLES [INFO] 2020-01-31T22:12:58.534Z 1c8df7d3-xmpl-46da-9778-518e6eca8125 environ({'AWS_LAMBDA_LOG_GROUP_NAME': '/aws/lambda/my-function', 'AWS_LAMBDA_LOG_STREAM_NAME': '2020/01/31/[$LATEST]1bbe51xmplb34a2788dbaa7433b0aa4d', 'AWS_LAMBDA_FUNCTION_NAME': 'my-function', ...}) [INFO] 2020-01-31T22:12:58.535Z 1c8df7d3-xmpl-46da-9778-518e6eca8125 ## EVENT [INFO] 2020-01-31T22:12:58.535Z 1c8df7d3-xmpl-46da-9778-518e6eca8125 {'key': 'value'} END RequestId: 1c8df7d3-xmpl-46da-9778-518e6eca8125 REPORT RequestId: 1c8df7d3-xmpl-46da-9778-518e6eca8125 Duration: 2.75 ms Billed Duration: 3 ms Memory Size: 128 MB Max Memory Used: 56 MB Init Duration: 113.51 ms XRAY TraceId: 1-5e34a66a-474xmpl7c2534a87870b4370 SegmentId: 073cxmpl3e442861 Sampled: true