View a markdown version of this page

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 memantau 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, lihatMengirim log fungsi Lambda ke CloudWatch Log.

Membuat fungsi yang mengembalikan log

Untuk menampilkan log dari kode fungsi Anda, Anda dapat menggunakan objek konteks ILambdaLogger on, metode pada kelas Console, atau pustaka logging apa pun yang menulis ke stdout ataustderr.

Runtime .NET mencatat baris START, END, dan REPORT untuk setiap invokasi. Baris laporan memberikan perincian berikut.

Bidang data baris LAPORAN
  • 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. Ketika 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 X-Ray segmen.

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

Menggunakan kontrol logging lanjutan Lambda dengan.NET

Untuk memberi Anda lebih banyak kontrol atas bagaimana log fungsi Anda ditangkap, diproses, dan digunakan, Anda dapat mengonfigurasi opsi logging berikut untuk runtime.NET yang didukung:

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

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

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

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 fungsi.NET Lambda Anda, lihat panduan di bagian berikut.

Menggunakan format log JSON terstruktur dengan.NET

Jika Anda memilih JSON untuk format log fungsi Anda, Lambda mengirimkan output log menggunakan ILambdaLogger JSON terstruktur. Setiap objek log JSON 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

Inst ILambdaLogger ance dapat menambahkan pasangan nilai kunci tambahan, misalnya saat mencatat pengecualian. Anda juga dapat menyediakan parameter tambahan Anda sendiri seperti yang dijelaskan di bagian iniCustomer-provided parameter log.

catatan

Jika kode Anda sudah menggunakan pustaka logging lain untuk menghasilkan JSON-formatted log, pastikan format log fungsi Anda diatur ke teks biasa. Mengatur format log ke JSON menghasilkan output log Anda dikodekan ganda.

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

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

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

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

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

contoh Catatan log JSON
{ "timestamp": "2025-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 daripada JSON, maka level log yang ditangkap dalam pesan mengikuti konvensi Microsoft menggunakan label empat karakter. Misalnya, tingkat log di Debug representasikan dalam pesan sebagaidbug.

Saat Anda mengonfigurasi fungsi Anda untuk menggunakan log berformat JSON, tingkat log yang ditangkap dalam log menggunakan label lengkap seperti yang ditunjukkan pada contoh catatan log JSON.

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

Pengecualian logging di JSON

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

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

Output format log oleh kode ini ditunjukkan dalam contoh JSON berikut. 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 Catatan log JSON
{ "timestamp": "2025-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 diatur ke JSON, Lambda juga menampilkan pesan JSON-formatted log saat kode Anda menampilkan pengecualian yang tidak tertangkap. Contoh cuplikan kode dan pesan log berikut menunjukkan bagaimana pengecualian yang tidak tertangkap dicatat.

contoh kode pengecualian
throw new ApplicationException("Invalid data");
contoh Catatan log JSON
{ "timestamp": "2025-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>"] }

Customer-provided parameter log

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

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

Output pesan log oleh perintah ini ditampilkan dalam contoh JSON berikut.

contoh Catatan log JSON
{ "timestamp": "2025-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 dalam contoh sebelumnya juga dapat ditulis sebagai berikut:

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

Perhatikan bahwa ketika Anda memberikan parameter logging tambahan, Lambda menangkapnya sebagai properti tingkat atas dalam catatan log JSON. Pendekatan ini berbeda dari beberapa pustaka logging .NET populer sepertiSerilog, yang menangkap parameter tambahan dalam objek anak yang terpisah.

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

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

Output pesan log oleh perintah ini ditampilkan dalam contoh JSON berikut.

contoh Catatan log JSON
{ "timestamp": "2025-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 pesan log JSON sebagai array seperti yang ditunjukkan dalam contoh catatan log JSON 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 dibuat menggunakan ToString metode.

contoh Catatan log JSON dengan argumen IList
{ "timestamp": "2025-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 membuat serial JSON daftar dengan menggunakan @ awalan dalam perintah logging Anda. Dalam contoh catatan log JSON berikut, users properti diserialisasi JSON.

contoh Catatan log JSON dengan argumen iList serial JSON
{ "timestamp": "2025-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 dari tingkat detail tertentu atau lebih rendah ke CloudWatch Log. Untuk mempelajari cara mengonfigurasi penyaringan tingkat log untuk fungsi Anda, lihat. Log-level penyaringan

AWS Lambda Untuk memfilter pesan log berdasarkan tingkat log, Anda dapat menggunakan log berformat JSON atau menggunakan Console metode.NET untuk menampilkan pesan log. Untuk membuat log berformat JSON, konfigurasikan jenis log fungsi Anda ke JSON dan gunakan ILambdaLogger instance.

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

Jika Anda menggunakan Console metode.NET untuk menulis pesan ke CloudWatch Log, Lambda menerapkan level log ke pesan Anda sebagai berikut:

  • Console.WriteLine metode - Lambda menerapkan tingkat log dari INFO

  • Console.Error metode - Lambda menerapkan tingkat log dari ERROR

Saat Anda mengonfigurasi fungsi Anda untuk menggunakan penyaringan 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 level log WARN, Lambda mengirimkan log yang sesuai dengan level WARN, ERROR, dan FATAL.

Alat dan pustaka logging tambahan

Powertools for AWS Lambda (.NET) adalah toolkit pengembang untuk mengimplementasikan praktik terbaik Tanpa Server dan meningkatkan kecepatan pengembang. Utilitas Log ging 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, start dingin, dan output logging struktur 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 format log kustom (Bring Your Own Formatter) untuk menampilkan log dalam struktur yang kompatibel dengan RFC Logging organisasi Anda

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

Ikuti langkah-langkah di bawah ini untuk mengunduh, membangun, dan menerapkan contoh aplikasi Hello World C# dengan modul Powertools untuk AWS Lambda (.NET) terintegrasi menggunakan. AWS SAM Aplikasi ini mengimplementasikan backend API dasar dan menggunakan Powertools untuk memancarkan log, metrik, dan jejak. Ini terdiri dari titik akhir Amazon API Gateway dan fungsi Lambda. Saat Anda mengirim permintaan GET ke titik akhir API Gateway, fungsi Lambda memanggil, mengirimkan log dan metrik menggunakan Format Metrik Tertanam ke CloudWatch, 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 sampel AWS SAM application
  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 URL aplikasi yang digunakan:

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

    curl -X GET <URL_FROM_PREVIOUS_STEP>

    Jika berhasil, Anda akan melihat respons ini:

    {"message":"hello world"}
  7. Untuk mendapatkan log untuk fungsi tersebut, jalankan sam logs. 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:

    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:27.988000 INIT_START Runtime Version: dotnet:6.v13        Runtime Version ARN: arn:aws:lambda:ap-southeast-2::runtime:699f346a05dae24c58c45790bc4089f252bf17dae3997e79b17d939a288aa1ec
    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:28.229000 START RequestId: bed25b38-d012-42e7-ba28-f272535fb80e Version: $LATEST
    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:29.259000 2025-09-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}
    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:30.479000 2025-09-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":"2025-09-20T14:15:30.4602970Z","Level":"Information","Service":"PowertoolsHelloWorld","Name":"AWS.Lambda.Powertools.Logging.Logger","Message":"Hello world API - HTTP 200"}
    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:30.599000 2025-09-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}
    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:30.680000 END RequestId: bed25b38-d012-42e7-ba28-f272535fb80e
    2025/02/20/[$LATEST]4eaf8445ba7a4a93b999cb17fbfbecd8 2025-09-20T14:15:30.680000 REPORT RequestId: bed25b38-d012-42e7-ba28-f272535fb80e  Duration: 2450.99 ms   Billed Duration: 2692 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 titik akhir API 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 yang setelah CloudWatch itu secara otomatis menghapus log. Untuk mengatur retensi log, tambahkan yang berikut ini ke AWS SAM template 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 yang disematkan, Anda menemukan log dalam hasil eksekusi. Saat Anda menggunakan fitur pengujian konsol untuk memanggil fungsi, Anda 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. Aliran log muncul saat Anda memperbarui fungsi Lambda Anda, dan ketika instance tambahan dibuat untuk menangani pemanggilan bersamaan. Untuk menemukan log untuk pemanggilan tertentu, sebaiknya instrumentasikan fungsi Anda dengan. AWS X-Ray X-Ray merekam detail tentang permintaan dan aliran log di jejak.

Melihat log menggunakan AWS Command Line Interface (AWS CLI)

Ini AWS CLI adalah alat sumber terbuka yang dapat Anda gunakan untuk 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)

Dalam command prompt yang sama, pengguna macOS dan Linux mungkin perlu menjalankan perintah berikut untuk memastikan skrip dapat dieksekusi.

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.