Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengirim log menggunakan titik akhir NDJSON (ND-JSON Logs)
Titik akhir ND-JSON Logs (/ingest/bulk) menerima log dalam format NDJSON (Newline Delimited JSON
Jika Anda menggunakan otentikasi token pembawa, selesaikan langkah-langkah penyiapan Menyiapkan otentikasi token pembawa sebelum melanjutkan.
Format permintaan
Kirim satu nilai JSON per baris, dipisahkan oleh \n (LF) atau \r\n (CRLF). Baris kosong diabaikan secara diam-diam.
{"timestamp":1771007942000,"message":"event one","level":"INFO"} {"timestamp":1771007943000,"message":"event two","level":"ERROR"} {"timestamp":1771007944000,"message":"event three","level":"DEBUG"}
Keduanya application/json dan application/x-ndjson diterima sebagai Content-Type.
Jenis nilai JSON yang diterima
Per spesifikasi NDJSON (RFC 8259), nilai JSON yang valid diterima pada setiap baris.
Objek JSON (paling umum):
{"timestamp":1771007942000,"message":"User logged in","service":"auth"} {"timestamp":1771007943000,"error":"Connection timeout","service":"api"}
Array JSON (diratakan menjadi peristiwa individual):
[{"timestamp":1000,"message":"a"},{"timestamp":2000,"message":"b"}]
Baris tunggal ini menghasilkan 2 peristiwa. Setiap elemen array menjadi peristiwa log terpisah.
Nilai primitif:
"a plain string log message" 42 true null
Setiap primitif menjadi acaranya sendiri dengan stempel waktu server saat ini.
Jenis campuran:
{"timestamp":1771007942000,"message":"structured event"} "unstructured string message" 42 {"timestamp":1771007943000,"error":"something failed"}
Semua 4 baris diterima sebagai acara yang valid.
| Konten baris | Perilaku |
|---|---|
| Objek JSON | Diterima, stempel waktu diekstraksi jika ada |
| Array JSON | Diratakan - setiap elemen menjadi acara yang terpisah |
Array kosong [] |
Diterima, menghasilkan 0 acara |
| String JSON | Diterima sebagai pesan acara |
| Nomor JSON | Diterima sebagai pesan acara |
| Boolean JSON | Diterima sebagai pesan acara |
| JSON nol | Diterima sebagai pesan acara |
| JSON tidak valid | Dilewati (dihitung, pemrosesan berlanjut) |
| Baris kosong | Diabaikan (tidak dihitung sebagai dilewati) |
Bidang stempel waktu
"timestamp"Bidang ini dalam milidetik epoch (bukan detik).
| format | Contoh | Ditafsirkan sebagai |
|---|---|---|
| Numerik (millis) | "timestamp":1771007942000 |
1771007942000 ms |
| Hilang | (tidak ada bidang stempel waktu) | Waktu server saat ini |
| Non-numerik | "timestamp":"invalid" |
Waktu server saat ini |
| Garis non-objek | "hello", 42, true |
Waktu server saat ini |
Baris tidak valid
Baris yang tidak valid JSON dilewati dan dihitung secara diam-diam. Pemrosesan berlanjut dengan baris berikutnya.
{"message":"valid event"} this is not valid json {"message":"another valid event"}
Hasil: 2 acara tertelan, 1 dilewati. PengembalianHTTP 200.
Jika semua baris tidak valid, kembali HTTP 400 dengan. "All events were invalid"
Contoh permintaan
curl -X POST "https://logs.<region>.amazonaws.com/ingest/bulk?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/x-ndjson" \ -d '{"timestamp":1771007942000,"message":"User logged in","level":"INFO"} {"timestamp":1771007943000,"message":"Query took 42ms","level":"DEBUG"} {"timestamp":1771007944000,"error":"Connection refused","level":"ERROR"}'
Respons
Sukses (semua acara diterima):
HTTP 200 OK {}
Keberhasilan sebagian (beberapa acara ditolak):
{ "partialSuccess": { "rejectedLogRecords": 5, "errorMessage": "{\"tooOldLogEventCount\": 3, \"tooNewLogEventCount\": 1, \"expiredLogEventCount\": 1}" } }
rejectedLogRecordsBidang adalah jumlah total peristiwa yang ditolak. errorMessageBidang berisi rincian yang dikodekan JSON dengan alasan penolakan:
tooOldLogEventCount— Acara dengan stempel waktu yang lebih tua dari periode retensitooNewLogEventCount— Acara dengan stempel waktu terlalu jauh di masa depanexpiredLogEventCount— Acara yang kedaluwarsa selama pemrosesan
Praktik terbaik
Acara batching
Untuk kinerja dan efisiensi yang lebih baik:
Batch beberapa peristiwa dalam satu permintaan bila memungkinkan
Ukuran batch yang disarankan: 10—100 acara per permintaan
Ukuran permintaan maksimal: 1 MB
Penanganan kesalahan
Menerapkan penanganan kesalahan yang tepat dalam aplikasi Anda. Kode status HTTP umum:
200 OK— Log berhasil dicerna400 Bad Request— Format atau parameter permintaan tidak valid401 Unauthorized— Token pembawa tidak valid atau kedaluwarsa403 Forbidden— Izin tidak mencukupi404 Not Found— Grup log atau aliran tidak ada429 Too Many Requests— Batas tarif terlampaui500 Internal Server Error— Kesalahan layanan (coba lagi dengan backoff eksponensial)
Batasan
Ukuran acara maksimal: 256 KB per acara
Ukuran permintaan maksimal: 1 MB
Maksimum acara per permintaan: 10.000
Nama grup log harus mengikuti konvensi penamaan CloudWatch Log
Otentikasi token pembawa harus diaktifkan pada grup log jika otentikasi token pembawa digunakan.