Memahami konsep kueri terjadwal - CloudWatch Log Amazon

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

Memahami konsep kueri terjadwal

Sebelum membuat kueri terjadwal, pahami konsep-konsep kunci ini yang memengaruhi cara kueri Anda berjalan dan di mana hasil dikirimkan.

Pemisahan peran IAM

Kueri terjadwal memerlukan dua peran IAM terpisah: satu untuk mengeksekusi kueri dan satu lagi untuk memberikan hasil ke bus acara Amazon S3 atau Amazon. EventBridge Memahami mengapa pemisahan ini ada membantu Anda mengonfigurasi izin dengan benar dan menggunakan manfaat keamanan dan operasional yang diberikannya.

Arsitektur dua peran membagi tanggung jawab antara akses data dan pengiriman data. Peran eksekusi kueri mengakses data log Anda dan menjalankan kueri, sementara peran pengiriman tujuan menulis hasil ke tujuan yang Anda pilih. Pemisahan ini mengikuti prinsip hak istimewa terkecil—setiap peran hanya memiliki izin yang dibutuhkan untuk fungsi spesifiknya.

Peran eksekusi kueri

Memungkinkan CloudWatch CloudWatch Log menjalankan kueri Wawasan Log atas nama Anda. Peran ini memerlukan izin untuk mengakses grup log Anda dan menjalankan kueri, tetapi tidak memerlukan akses ke sumber daya tujuan. Izin yang diperlukan:

  • logs:StartQuery

  • logs:StopQuery

  • logs:GetQueryResults

  • logs:DescribeLogGroups

  • logs:Unmaskjika data buka kedok diperlukan

Untuk grup log terenkripsi KMS: kms:Decrypt dan kms:DescribeKey izin untuk kunci KMS yang digunakan untuk mengenkripsi grup log. Izin ini perlu ditambahkan juga.

Persyaratan hubungan kepercayaan: Peran eksekusi kueri harus menyertakan kebijakan kepercayaan yang memungkinkan layanan CloudWatch Log (logs.amazonaws.com) untuk mengambil peran tersebut. Tanpa hubungan kepercayaan ini, kueri terjadwal akan gagal dengan kesalahan izin.

Contoh kebijakan kepercayaan untuk peran eksekusi kueri:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Contoh kebijakan izin untuk peran eksekusi kueri:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
Peran pengiriman tujuan

Memungkinkan CloudWatch Log untuk mengirimkan hasil kueri ke tujuan yang Anda pilih. Peran ini hanya memerlukan izin untuk layanan tujuan tertentu, mengikuti prinsip hak istimewa paling sedikit. Izin yang diperlukan bervariasi menurut jenis tujuan.

Persyaratan hubungan kepercayaan: Peran pengiriman tujuan juga harus menyertakan kebijakan kepercayaan yang memungkinkan layanan CloudWatch Log (logs.amazonaws.com) untuk mengambil peran tersebut.

Contoh kebijakan izin untuk peran pengiriman tujuan S3:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::your-scheduled-query-results-bucket/*" } ] }

Pemisahan ini memberikan manfaat praktis untuk operasi Anda. Dari perspektif keamanan, jika Anda perlu mengubah lokasi pengiriman hasil, Anda hanya mengubah peran pengiriman tujuan tanpa mengubah izin eksekusi kueri. Untuk kepatuhan dan audit, Anda dapat dengan jelas melacak peran mana yang mengakses data log sensitif dan peran mana yang ditulis ke sistem eksternal. Ini memudahkan untuk menunjukkan bahwa infrastruktur analisis log Anda mengikuti praktik terbaik keamanan.

Penggunaan lintas wilayah dan lintas akun

Kueri terjadwal dibuat di wilayah tertentu dan berjalan di wilayah tersebut. Namun, Anda dapat menanyakan grup log dan memberikan hasil di seluruh wilayah dan akun. Anda perlu menyiapkan satu atau beberapa AWS akun sebagai akun pemantauan dan menautkannya dengan beberapa akun sumber. Akun pemantauan adalah AWS akun pusat yang dapat melihat dan berinteraksi dengan data observabilitas yang dihasilkan dari akun sumber. Akun sumber adalah AWS akun individu yang menghasilkan data observabilitas untuk sumber daya yang berada di dalamnya. Akun sumber membagikan data observabilitas mereka dengan akun pemantauan. Jadi, Anda dapat mengatur kueri terjadwal dari akun pemantauan menggunakan grup log dari semua akun yang ditautkan.

Menanyakan grup log lintas wilayah

Kueri terjadwal Anda dapat mengakses grup log di wilayah mana pun. Tentukan grup log menggunakan format ARN lengkapnya:. arn:aws:logs:region:account-id:log-group:log-group-name Kebutuhan peran eksekusi kueri logs:StartQuery dan logs:GetQueryResults izin untuk grup log di semua wilayah target.

penting

Saat menanyakan grup log atau memberikan hasil di seluruh wilayah, data log melintasi batas regional. Pertimbangkan hal berikut:

  • Persyaratan residensi data - Pastikan transfer data lintas wilayah sesuai dengan kebijakan tata kelola data organisasi Anda dan persyaratan peraturan

  • Biaya transfer data - Transfer data lintas wilayah menimbulkan biaya tambahan

  • Latensi jaringan - Kueri yang mengakses grup log di wilayah yang jauh mungkin mengalami latensi yang lebih tinggi

Untuk kinerja optimal dan efisiensi biaya, buat kueri terjadwal di wilayah yang sama dengan grup log utama Anda.

Pendekatan alternatif: Gunakan sentralisasi CloudWatch Log untuk mereplikasi data log dari beberapa akun dan wilayah menjadi akun pemantauan pusat. Ini memungkinkan Anda membuat kueri terjadwal di satu wilayah yang mengakses semua log terpusat Anda, menghindari kueri lintas wilayah, dan menyederhanakan pengelolaan izin IAM.

Menjadwalkan ekspresi dan penanganan zona waktu

Jadwal yang Anda tentukan menentukan kapan kueri Anda berjalan dan seberapa sering dijalankan. Memilih ekspresi jadwal yang tepat memengaruhi saat Anda menerima hasil dan berapa banyak data yang Anda kueri. Memahami jenis ekspresi membantu Anda memilih antara kesederhanaan dan presisi.

Ekspresi cron memberikan kontrol yang tepat atas waktu, memungkinkan Anda menentukan waktu yang tepat, hari dalam seminggu, atau hari dalam sebulan. Gunakan ekspresi cron saat Anda membutuhkan kueri untuk dijalankan pada jam kerja tertentu atau sejajar dengan jadwal operasional. Di konsol Anda juga dapat menjadwalkan kueri menggunakan opsi kalender mudah.

Ekspresi Cron

Jalankan kueri pada waktu tertentu. Format: cron(minute hour day-of-month month day-of-week year). Contoh:

  • cron(0 9 * * ? *)- Setiap hari pukul 09.00 UTC

  • cron(0 18 ? * MON-FRI *)- Hari kerja pukul 6:00 PM UTC

  • cron(0 0 1 * ? *)- Hari pertama setiap bulan pada tengah malam UTC

  • cron(0 12 ? * SUN *)- Setiap hari Minggu di siang hari UTC

  • cron(30 8 1 1 ? *)- 1 Januari pukul 8:30 UTC

Semua kueri terjadwal berjalan di UTC, terlepas dari zona waktu lokal Anda atau di mana AWS sumber daya Anda berada. Ini sangat penting ketika Anda menjadwalkan kueri untuk jam kerja atau analisis sensitif waktu. Misalnya, jika bisnis Anda beroperasi di Waktu Timur AS dan Anda menginginkan laporan harian pada pukul 9 pagi ET, Anda perlu memperhitungkan offset UTC (14:00 UTC selama waktu musim panas, 13:00 UTC sebaliknya). Rencanakan ekspresi jadwal Anda dengan mempertimbangkan UTC untuk memastikan kueri berjalan pada waktu yang ditentukan.

Memilih bahasa kueri

Kueri terjadwal mendukung tiga bahasa kueri yang berbeda, dan pilihan Anda memengaruhi cara Anda menulis kueri dan seberapa mudah tim Anda dapat mempertahankannya. Bahasa yang tepat tergantung pada persyaratan analisis Anda dan keterampilan tim Anda yang ada.

Jika Anda terutama memfilter dan menggabungkan data log, CloudWatch Logs Insights Query Language menawarkan sintaks yang paling mudah. Untuk transformasi data yang kompleks di mana Anda perlu membentuk kembali atau memperkaya data melalui beberapa langkah, pendekatan pipeline PPL membuat logika lebih mudah diikuti. Ketika Anda perlu melakukan gabungan atau agregasi kompleks yang mirip dengan operasi database, SQL menyediakan sintaks akrab yang dapat diadopsi oleh tim berpengalaman database dengan cepat.

CloudWatch Bahasa Kueri Wawasan Log (CWLI)

Dibuat khusus untuk analisis log dengan sintaks intuitif. Terbaik untuk:

  • Analisis dan penyaringan log berbasis teks

  • Agregasi dan statistik deret waktu

  • Tim baru untuk analisis log

OpenSearch Service Piped Processing Language (PPL)

Bahasa kueri berbasis pipeline dengan kemampuan transformasi data yang kuat. Terbaik untuk:

  • Transformasi dan pengayaan data yang kompleks

  • Alur kerja pemrosesan data multi-langkah

  • Tim yang akrab dengan pemrosesan berbasis pipa

OpenSearch Layanan Structured Query Language (SQL)

Sintaks SQL standar untuk kueri gaya database yang sudah dikenal. Terbaik untuk:

  • Kompleks bergabung dan agregasi

  • Intelijen bisnis dan pelaporan

  • Tim dengan pengalaman SQL yang kuat

Pemilihan tujuan dan kasus penggunaan

Di mana Anda mengirim hasil kueri menentukan apa yang dapat Anda lakukan dengan mereka. Pilihan ini membentuk seluruh alur kerja hilir Anda—apakah Anda sedang membangun analitik jangka panjang, memicu respons otomatis, atau keduanya. Memahami kekuatan setiap jenis tujuan membantu Anda merancang arsitektur yang tepat untuk kasus penggunaan Anda.

Tujuan Amazon S3 dioptimalkan untuk penyimpanan dan pemrosesan batch. Saat Anda perlu menyimpan hasil kueri selama berbulan-bulan atau bertahun-tahun, menganalisis tren dari waktu ke waktu, atau memasukkan data ke dalam platform analitik, Amazon S3 menyediakan penyimpanan hemat biaya dengan retensi tak terbatas. EventBridge tujuan dioptimalkan untuk otomatisasi waktu nyata. Ketika hasil kueri harus memicu tindakan segera—seperti mengirim peringatan, memulai alur kerja, atau memperbarui sistem— EventBridge memberikan hasil sebagai peristiwa yang dapat ditanggapi oleh aplikasi Anda secara instan. Secara default, semua peristiwa penyelesaian kueri secara otomatis dikirim sebagai peristiwa ke bus peristiwa default, memungkinkan integrasi dengan sistem pemrosesan hilir, fungsi Lambda, atau arsitektur berbasis peristiwa lainnya. Hasil hanya dipublikasikan ke tujuan ketika kueri dijalankan dengan sukses.

Tujuan Amazon S3

Simpan hasil kueri sebagai file JSON untuk retensi jangka panjang dan pemrosesan batch. Terbaik untuk:

  • Analisis historis dan pengarsipan data

  • Integrasi dengan data lake dan platform analitik

  • Persyaratan kepatuhan dan audit

  • Penyimpanan hemat biaya dari set hasil besar

EventBridge destinasi

Kirim hasil kueri sebagai acara untuk pemrosesan dan otomatisasi waktu nyata. Anda dapat mengambil hasil kueri menggunakan QueryID yang dikirim dalam acara hingga 30 hari hanya karena kami menyimpan hasil selama 30 hari. Terbaik untuk:

  • Memicu respons otomatis terhadap hasil kueri

  • Integrasi dengan alur kerja tanpa server dan fungsi Lambda

  • Sistem peringatan dan notifikasi waktu nyata

  • Arsitektur dan layanan mikro yang digerakkan oleh acara

Format dan struktur hasil kueri

Untuk tujuan Amazon S3 - Hasil kueri dikirimkan dalam format JSON dengan struktur yang sama dengan respons API. GetQueryResults Untuk Amazon, EventBridge memahami format hasil kueri terjadwal membantu Anda merancang alur kerja pemrosesan dan integrasi hilir.

Hasil kueri disampaikan dalam format JSON dengan struktur berikut:

{ "version": "0", "id": "be72061b-eca2-e068-a7e1-83e01d6fe807", "detail-type": "Scheduled Query Completed", "source": "aws.logs", "account": "123456789012", "time": "2025-11-18T11:31:48Z", "region": "us-east-1", "resources": [ "arn:aws:logs:us-east-1:123456789012:scheduled-query:477b4380-b098-474e-9c5e-e10a8cc2e6e7" ], "detail": { "queryId": "2038fd57-ab4f-4018-bb2f-61d363f4a004", "queryString": "fields @timestamp, @message, @logStream, @log\n| sort @timestamp desc\n| limit 10000", "logGroupIdentifiers": [ "/aws/lambda/my-function" ], "status": "Complete", "startTime": 1763465460, "statistics": { "recordsMatched": 0, "recordsScanned": 0, "estimatedRecordsSkipped": 0, "bytesScanned": 0, "estimatedBytesSkipped": 0, "logGroupsScanned": 1 } } }

Elemen kunci meliputi:

  • statistics- Metrik kinerja kueri termasuk catatan yang cocok, dipindai, byte diproses, dan diperkirakan data yang dilewati

  • startTime- Saat eksekusi kueri dimulai (stempel waktu Unix)

  • queryString- Kueri aktual yang dieksekusi

  • queryId- ID kueri dari kueri yang menggunakan hasil mana yang dapat diambil

  • logGroupIdentifiers- Daftar grup log yang ditanyakan

  • status- Status eksekusi kueri (Lengkap, Gagal, dll.)