Log dan pantau fungsi C# Lambda - AWS Lambda

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

Log dan pantau fungsi C# Lambda

AWS Lambda secara otomatis memonitor fungsi Lambda dan mengirim entri 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 pemanggilan dan output lainnya dari kode fungsi Anda ke aliran log. Untuk informasi selengkapnya tentang CloudWatch Log, lihatMenggunakan CloudWatch Log dengan Lambda.

Membuat fungsi yang mengembalikan log

Untuk mengeluarkan log dari kode fungsi, Anda dapat menggunakan objek ILambdaLoggerpada konteks, metode di kelas Console, atau pustaka logging apa pun yang menulis ke stdout ataustderr.

Itu. NETruntime mencatat REPORT barisSTART,END, dan untuk setiap pemanggilan. Baris laporan memberikan perincian berikut.

REPORTbidang data baris
  • RequestId – ID permintaan unik untuk invokasi.

  • 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. Saat pemanggilan berbagi lingkungan eksekusi, Lambda melaporkan memori maksimum yang digunakan di semua pemanggilan. Perilaku ini dapat menghasilkan nilai yang dilaporkan lebih tinggi dari yang diharapkan.

  • 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.

Menggunakan kontrol logging lanjutan Lambda dengan. NET

Untuk memberi Anda kontrol lebih besar atas bagaimana log fungsi Anda ditangkap, diproses, dan dikonsumsi, Anda dapat mengonfigurasi opsi pencatatan berikut untuk didukung. NETruntime:

  • Format log - pilih antara teks biasa dan JSON format terstruktur untuk log fungsi Anda

  • Tingkat log - untuk log dalam JSON format, pilih tingkat detail log yang dikirim Lambda ke CloudWatch, seperti,ERROR, DEBUG atau INFO

  • Grup log - pilih grup CloudWatch log yang dikirimkan oleh fungsi Anda

Untuk informasi selengkapnya tentang opsi pencatatan ini, dan petunjuk tentang cara mengonfigurasi fungsi Anda untuk menggunakannya, lihatMengkonfigurasi kontrol logging lanjutan untuk fungsi Lambda.

Untuk menggunakan format log dan opsi tingkat log dengan Anda. NET Fungsi Lambda, lihat panduan di bagian berikut.

Menggunakan format JSON log terstruktur dengan. NET

Jika Anda memilih JSON untuk format log fungsi Anda, Lambda akan mengirim log output menggunakan ILambdaLoggersebagai terstruktur. JSON Setiap objek JSON log berisi setidaknya lima pasangan nilai kunci dengan kunci berikut:

  • "timestamp"- waktu pesan log dihasilkan

  • "level"- tingkat log yang ditetapkan untuk pesan

  • "requestId"- ID permintaan unik untuk pemanggilan fungsi

  • "traceId"- variabel _X_AMZN_TRACE_ID lingkungan

  • "message"- isi pesan log

ILambdaLoggerInstance dapat menambahkan pasangan nilai kunci tambahan, misalnya saat mencatat pengecualian. Anda juga dapat menyediakan parameter tambahan Anda sendiri seperti yang dijelaskan di bagian iniParameter log yang disediakan pelanggan.

catatan

Jika kode Anda sudah menggunakan pustaka logging lain untuk menghasilkan log JSON berformat -, pastikan format log fungsi Anda disetel ke teks biasa. Menyetel format log ke JSON akan menghasilkan output log Anda dikodekan ganda.

Contoh perintah logging berikut menunjukkan cara menulis pesan log dengan tingkatINFO.

contoh . NETkode pencatatan
context.Logger.LogInformation("Fetching cart from database");

Anda juga dapat menggunakan metode log generik yang mengambil tingkat log sebagai argumen seperti yang ditunjukkan pada contoh berikut.

context.Logger.Log(LogLevel.Information, "Fetching cart from database");

Output log oleh cuplikan kode contoh ini akan ditangkap di CloudWatch Log sebagai berikut:

contoh JSONcatatan log
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Information", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "Fetching cart from database" }
catatan

Jika Anda mengonfigurasi format log fungsi Anda untuk menggunakan teks biasa daripadaJSON, maka tingkat log yang ditangkap dalam pesan mengikuti konvensi Microsoft menggunakan label empat karakter. Misalnya, tingkat log Debug direpresentasikan dalam pesan sebagaidbug.

Saat Anda mengonfigurasi fungsi Anda untuk menggunakan log JSON yang diformat, level log yang ditangkap di log menggunakan label lengkap seperti yang ditunjukkan dalam catatan JSON log contoh.

Jika Anda tidak menetapkan level ke output log Anda, Lambda akan secara otomatis menetapkan levelnya. INFO

Pengecualian logging di JSON

Saat menggunakan JSON logging terstruktur denganILambdaLogger, Anda dapat mencatat pengecualian dalam kode Anda seperti yang ditunjukkan pada contoh berikut.

contoh penggunaan log pengecualian
try { connection.ExecuteQuery(query); } catch(Exception e) { context.Logger.LogWarning(e, "Error executing query"); }

Output format log oleh kode ini ditunjukkan pada contoh berikutJSON. Perhatikan bahwa message properti di JSON diisi menggunakan argumen pesan yang disediakan dalam LogWarning panggilan, sedangkan errorMessage properti berasal dari Message properti pengecualian itu sendiri.

contoh JSONcatatan log
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Warning", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "Error executing query", "errorType": "System.Data.SqlClient.SqlException", "errorMessage": "Connection closed", "stackTrace": ["<call exception.StackTrace>"] }

Jika format logging fungsi Anda disetel keJSON, Lambda juga mengeluarkan pesan log yang JSON diformat -saat kode Anda melempar pengecualian yang tidak tertangkap. Contoh cuplikan kode berikut dan pesan log menunjukkan bagaimana pengecualian yang tidak tertangkap dicatat.

contoh kode pengecualian
throw new ApplicationException("Invalid data");
contoh JSONcatatan log
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Error", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "Invalid data", "errorType": "System.ApplicationException", "errorMessage": "Invalid data", "stackTrace": ["<call exception.StackTrace>"] }

Parameter log yang disediakan pelanggan

Dengan pesan log JSON yang diformat, Anda dapat menyediakan parameter log tambahan dan memasukkannya ke dalam log. message Contoh cuplikan kode berikut menunjukkan perintah untuk menambahkan dua parameter yang disediakan pengguna berlabel dan. retryAttempt uri Dalam contoh, nilai parameter ini berasal dari uriDestination argumen retryAttempt dan diteruskan ke perintah logging.

contoh JSONperintah logging dengan parameter tambahan
context.Logger.LogInformation("Starting retry {retryAttempt} to make GET request to {uri}", retryAttempt, uriDestination);

Output pesan log oleh perintah ini ditunjukkan dalam contoh berikutJSON.

contoh JSONcatatan log
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Information", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "Starting retry 1 to make GET request to http://example.com/", "retryAttempt": 1, "uri": "http://example.com/" }
Tip

Anda juga dapat menggunakan properti posisi alih-alih nama saat menentukan parameter tambahan. Misalnya, perintah logging pada contoh sebelumnya juga dapat ditulis sebagai berikut:

context.Logger.LogInformation("Starting retry {0} to make GET request to {1}", retryAttempt, uriDestination);

Perhatikan bahwa saat Anda menyediakan parameter logging tambahan, Lambda menangkapnya sebagai properti tingkat atas dalam catatan log. JSON Pendekatan ini berbeda dari beberapa yang populer. NETlogging library sepertiSerilog, yang menangkap parameter tambahan dalam objek anak yang terpisah.

Jika argumen yang Anda berikan untuk parameter tambahan adalah objek yang kompleks, secara default Lambda menggunakan ToString() metode untuk memberikan nilai. Untuk menunjukkan bahwa argumen harus JSON diserialisasi, gunakan @ awalan seperti yang ditunjukkan pada cuplikan kode berikut. Dalam contoh ini, User adalah objek dengan FirstName dan LastName properti.

contoh JSONperintah logging dengan JSON objek serial
context.Logger.LogInformation("User {@user} logged in", User);

Output pesan log oleh perintah ini ditunjukkan dalam contoh berikutJSON.

contoh JSONcatatan log
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Information", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "User {@user} logged in", "user": { "FirstName": "John", "LastName": "Doe" } }

Jika argumen untuk parameter tambahan adalah array atau mengimplementasikan IList atauIDictionary, maka Lambda menambahkan argumen ke JSON pesan log sebagai array seperti yang ditunjukkan dalam JSON contoh catatan log berikut. Dalam contoh ini, {users} mengambil IList argumen yang berisi instance User properti dengan format yang sama seperti contoh sebelumnya. Lambda mengubah ini IList menjadi array, dengan setiap nilai yang dibuat menggunakan metode. ToString

contoh JSONcatatan log dengan IList argumen
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Information", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "{users} have joined the group", "users": [ "Rosalez, Alejandro", "Stiles, John" ] }

Anda juga dapat JSON membuat serial daftar dengan menggunakan @ awalan dalam perintah logging Anda. Dalam contoh catatan JSON log berikut, users properti JSON diserialisasikan.

contoh JSONcatatan log dengan JSON argumen serial IList
{ "timestamp": "2023-09-07T01:30:06.977Z", "level": "Information", "requestId": "8f711428-7e55-46f9-ae88-2a65d4f85fc5", "traceId": "1-6408af34-50f56f5b5677a7d763973804", "message": "{@users} have joined the group", "users": [ { "FirstName": "Alejandro", "LastName": "Rosalez" }, { "FirstName": "John", "LastName": "Stiles" } ] }

Menggunakan penyaringan tingkat log dengan. NET

Dengan mengonfigurasi penyaringan tingkat log, Anda dapat memilih untuk mengirim hanya log dengan tingkat detail tertentu atau lebih rendah ke Log. CloudWatch Untuk mempelajari cara mengonfigurasi pemfilteran tingkat log untuk fungsi Anda, lihat. Pemfilteran tingkat log

AWS Lambda Untuk memfilter pesan log Anda berdasarkan tingkat log, Anda dapat menggunakan log JSON yang diformat atau menggunakan file. NETConsolemetode untuk menampilkan pesan log. Untuk membuat log JSON yang diformat, konfigurasikan jenis log fungsi Anda JSON dan gunakan ILambdaLogger instance.

Dengan log JSON berformat -, Lambda memfilter output log Anda menggunakan pasangan nilai kunci “level” dalam objek yang dijelaskan di. JSON Menggunakan format JSON log terstruktur dengan. NET

Jika Anda menggunakan. NETConsolemetode untuk menulis pesan ke CloudWatch Log, Lambda menerapkan tingkat log ke pesan Anda sebagai berikut:

  • Konsol. WriteLine metode - Lambda menerapkan log-level INFO

  • Metode Console.Error - Lambda menerapkan log-level ERROR

Ketika Anda mengonfigurasi fungsi Anda untuk menggunakan pemfilteran tingkat log, Anda harus memilih dari opsi berikut untuk tingkat log yang ingin Lambda kirim ke Log. CloudWatch Perhatikan pemetaan level log yang digunakan oleh Lambda dengan level Microsoft standar yang digunakan oleh. NETILambdaLogger.

Tingkat log Lambda Level Microsoft yang setara Penggunaan standar
TRACE(paling detail) Jejak Informasi paling halus yang digunakan untuk melacak jalur eksekusi kode Anda
DEBUG Debug Informasi terperinci untuk debugging sistem
INFO Informasi Pesan yang merekam operasi normal fungsi Anda
WARN Peringatan Pesan tentang potensi kesalahan yang dapat menyebabkan perilaku tak terduga jika tidak ditangani
ERROR Kesalahan Pesan tentang masalah yang mencegah kode berfungsi seperti yang diharapkan
FATAL(paling sedikit detail) Kritis Pesan tentang kesalahan serius yang menyebabkan aplikasi berhenti berfungsi

Lambda mengirimkan log dari tingkat detail yang dipilih dan lebih rendah ke. CloudWatch Misalnya, jika Anda mengonfigurasi tingkat logWARN, Lambda akan mengirim log yang sesuai denganWARN,ERROR, dan FATAL level.

Alat dan pustaka pencatatan tambahan

Powertools untuk AWS Lambda (. NET) adalah toolkit pengembang untuk mengimplementasikan praktik terbaik Tanpa Server dan meningkatkan kecepatan pengembang. Utilitas Logging menyediakan logger yang dioptimalkan Lambda yang mencakup informasi tambahan tentang konteks fungsi di semua fungsi Anda dengan output terstruktur sebagai. JSON Gunakan utilitas ini untuk melakukan hal berikut:

  • Tangkap bidang kunci dari konteks Lambda, cold start, dan struktur logging output sebagai JSON

  • Log peristiwa pemanggilan Lambda saat diinstruksikan (dinonaktifkan secara default)

  • Cetak semua log hanya untuk persentase pemanggilan melalui pengambilan sampel log (dinonaktifkan secara default)

  • Tambahkan kunci tambahan ke log terstruktur kapan saja

  • Gunakan pemformat log kustom (Bring Your Own Formatter) untuk mengeluarkan log dalam struktur yang kompatibel dengan Logging organisasi Anda RFC

Menggunakan Powertools untuk AWS Lambda (. NET) dan AWS SAM untuk logging terstruktur

Ikuti langkah-langkah di bawah ini untuk mengunduh, membangun, dan menyebarkan contoh aplikasi Hello World C# dengan Powertools terintegrasi untuk (. AWS Lambda NET) modul menggunakan AWS SAM. Aplikasi ini mengimplementasikan API backend dasar dan menggunakan Powertools untuk memancarkan log, metrik, dan jejak. Ini terdiri dari titik akhir Amazon API Gateway dan fungsi Lambda. Saat Anda mengirim GET permintaan ke titik akhir API Gateway, fungsi Lambda memanggil, mengirim log dan metrik menggunakan Format Metrik Tertanam CloudWatch ke, dan mengirimkan jejak ke. AWS X-Ray Fungsi mengembalikan hello world pesan.

Prasyarat

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:

Menyebarkan aplikasi sampel AWS SAM
  1. Inisialisasi aplikasi menggunakan TypeScript template Hello World.

    sam init --app-template hello-world-powertools-dotnet --name sam-app --package-type Zip --runtime dotnet6 --no-tracing
  2. Bangun aplikasi.

    cd sam-app && sam build
  3. Terapkan aplikasi.

    sam deploy --guided
  4. Ikuti petunjuk di layar. Untuk menerima opsi default yang disediakan dalam pengalaman interaktif, tekanEnter.

    catatan

    Karena HelloWorldFunction mungkin tidak memiliki otorisasi yang ditentukan, Apakah ini baik-baik saja? , pastikan untuk masuky.

  5. Dapatkan aplikasi yang digunakan: URL

    aws cloudformation describe-stacks --stack-name sam-app --query 'Stacks[0].Outputs[?OutputKey==`HelloWorldApi`].OutputValue' --output text
  6. Memanggil titik API akhir:

    curl -X GET <URL_FROM_PREVIOUS_STEP>

    Jika berhasil, Anda akan melihat tanggapan ini:

    {"message":"hello world"}
  7. Untuk mendapatkan log untuk fungsi tersebut, jalankan log sam. Untuk informasi selengkapnya, lihat Bekerja dengan log di Panduan AWS Serverless Application Model Pengembang.

    sam logs --stack-name sam-app

    Output log terlihat seperti ini:

    2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:27.988000 INIT_START Runtime Version: dotnet:6.v13 Runtime Version ARN: arn:aws:lambda:ap-southeast-2::runtime:699f346a05dae24c58c45790bc4089f252bf17dae3997e79b17d939a288aa1ec 2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:28.229000 START RequestId: bed25b38-d012-42e7-ba28-f272535fb80e Version: $LATEST 2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:29.259000 2023-02-20T14:15:29.201Z bed25b38-d012-42e7-ba28-f272535fb80e info {"_aws":{"Timestamp":1676902528962,"CloudWatchMetrics":[{"Namespace":"sam-app-logging","Metrics":[{"Name":"ColdStart","Unit":"Count"}],"Dimensions":[["FunctionName"],["Service"]]}]},"FunctionName":"sam-app-HelloWorldFunction-haKIoVeose2p","Service":"PowertoolsHelloWorld","ColdStart":1} 2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:30.479000 2023-02-20T14:15:30.479Z bed25b38-d012-42e7-ba28-f272535fb80e info {"ColdStart":true,"XrayTraceId":"1-63f3807f-5dbcb9910c96f50742707542","CorrelationId":"d3d4de7f-4ccc-411a-a549-4d67b2fdc015","FunctionName":"sam-app-HelloWorldFunction-haKIoVeose2p","FunctionVersion":"$LATEST","FunctionMemorySize":256,"FunctionArn":"arn:aws:lambda:ap-southeast-2:123456789012:function:sam-app-HelloWorldFunction-haKIoVeose2p","FunctionRequestId":"bed25b38-d012-42e7-ba28-f272535fb80e","Timestamp":"2023-02-20T14:15:30.4602970Z","Level":"Information","Service":"PowertoolsHelloWorld","Name":"AWS.Lambda.Powertools.Logging.Logger","Message":"Hello world API - HTTP 200"} 2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:30.599000 2023-02-20T14:15:30.599Z bed25b38-d012-42e7-ba28-f272535fb80e info {"_aws":{"Timestamp":1676902528922,"CloudWatchMetrics":[{"Namespace":"sam-app-logging","Metrics":[{"Name":"ApiRequestCount","Unit":"Count"}],"Dimensions":[["Service"]]}]},"Service":"PowertoolsHelloWorld","ApiRequestCount":1} 2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:30.680000 END RequestId: bed25b38-d012-42e7-ba28-f272535fb80e 2023/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2023-02-20T14:15:30.680000 REPORT RequestId: bed25b38-d012-42e7-ba28-f272535fb80e Duration: 2450.99 ms Billed Duration: 2451 ms Memory Size: 256 MB Max Memory Used: 74 MB Init Duration: 240.05 ms XRAY TraceId: 1-63f3807f-5dbcb9910c96f50742707542 SegmentId: 16b362cd5f52cba0
  8. Ini adalah API titik akhir publik yang dapat diakses melalui internet. Kami menyarankan Anda menghapus titik akhir setelah pengujian.

    sam delete

Mengelola retensi log

Grup log tidak terhapus secara otomatis ketika Anda menghapus suatu fungsi. Untuk menghindari penyimpanan log tanpa batas waktu, hapus grup log, atau konfigurasikan periode retensi setelah itu secara CloudWatch otomatis menghapus log. Untuk mengatur penyimpanan log, tambahkan yang berikut ini ke AWS SAM templat Anda:

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: # Omitting other properties LogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub "/aws/lambda/${HelloWorldFunction}" RetentionInDays: 7

Melihat log di 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.

Melihat log di 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.

Melihat log 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 AWS CLI versi 2.

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.