Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengirim log ke CloudWatch Log menggunakan titik akhir HLC
Amazon CloudWatch Logs mendukung titik akhir HTTP Log Collector (HLC) yang memungkinkan Anda mengirim log langsung ke CloudWatch Log menggunakan protokol berbasis HTTP sederhana. Fitur ini menyederhanakan log ingestion untuk aplikasi dan layanan tanpa memerlukan AWS integrasi SDK.
Fitur endpoint HLC memungkinkan Anda untuk:
Kirim log ke CloudWatch Log menggunakan protokol berbasis HTTP
Otentikasi menggunakan kredensil khusus layanan IAM (token pembawa)
Menyerap log tanpa memerlukan integrasi AWS SDK
Gunakan permintaan HTTP POST sederhana dari aplikasi atau layanan apa pun
catatan
Kunci API (token pembawa) untuk akses titik akhir HLC saat ini dalam pratinjau dan tersedia di AWS Wilayah berikut:us-east-1,,us-west-1, us-west-2 dan. us-east-2 Silakan periksa dokumentasi ini untuk pembaruan di masa depan.
Prasyarat
Sebelum Anda dapat mengirim log menggunakan titik akhir HLC, Anda perlu:
Buat pengguna IAM dengan izin CloudWatch Log
Hasilkan kredensil khusus layanan (token pembawa)
Buat grup log dan aliran log
Aktifkan otentikasi token pembawa pada grup log
Opsi 1: Pengaturan yang disederhanakan menggunakan AWS konsol (disarankan)
AWS Management Console menyediakan alur kerja yang efisien untuk menghasilkan kunci API untuk akses titik akhir HLC.
Untuk mengatur akses titik akhir HLC menggunakan konsol
Masuk ke Konsol AWS Manajemen.
Arahkan CloudWatchke> Pengaturan> Log.
-
Di bagian API Keys, pilih Generate API key.
-
Untuk kedaluwarsa kunci API, lakukan salah satu hal berikut:
Pilih durasi kedaluwarsa kunci API 1, 5, 30, 90, atau 365 hari.
Pilih Durasi kustom untuk menentukan tanggal kedaluwarsa kunci API kustom.
Pilih Jangan pernah kedaluwarsa (tidak disarankan).
-
Pilih Hasilkan kunci API.
Konsol secara otomatis:
Membuat pengguna IAM baru dengan izin yang sesuai
Melampirkan kebijakan terkelola CloudWatchLogsAPIKeyAccess (termasuk
logs:PutLogEventsdanlogs:CallWithBearerTokenizin)Menghasilkan kredensi khusus layanan (kunci API)
-
Salin dan simpan kredenal yang ditampilkan dengan aman:
ID Kunci API (ID kredensi khusus layanan)
Rahasia Kunci API (Token pembawa)
penting
Simpan Rahasia Kunci API segera. Hal itu tidak dapat diambil lagi nanti. Jika Anda kehilangannya, Anda harus membuat kunci API baru.
-
Buat grup log dan aliran log tempat log Anda akan disimpan:
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1 -
Aktifkan otentikasi token pembawa pada grup log:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1Verifikasi konfigurasi:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Izin disertakan: Pengguna IAM yang dibuat secara otomatis akan memiliki izin berikut:
logs:PutLogEvents— Kirim peristiwa log ke CloudWatch Loglogs:CallWithBearerToken— Otentikasi menggunakan token pembawakms:Describe*,kms:GenerateDataKey*,kms:Decrypt— Akses grup log terenkripsi KMS (dengan kondisi membatasi layanan log)
Opsi 2: Pengaturan manual
Jika Anda lebih suka kontrol lebih besar atas konfigurasi IAM atau perlu menyesuaikan izin, Anda dapat mengatur titik akhir HLC secara manual.
Langkah 1: Buat pengguna IAM
Buat pengguna IAM yang akan digunakan untuk log ingestion:
Masuk ke AWS Management Console dan navigasikan ke IAM.
Pada panel navigasi kiri, pilih Pengguna.
Pilih Create user (Buat pengguna).
Masukkan nama pengguna (misalnya,
cloudwatch-logs-hlc-user).Pilih Berikutnya.
-
Lampirkan salah satu kebijakan IAM berikut:
Opsi A: Gunakan kebijakan terkelola (disarankan)
Lampirkan kebijakan terkelola CloudWatchLogsAPIKeyAccess.
Opsi B: Buat kebijakan khusus
Buat dan lampirkan kebijakan IAM berikut:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LogsAPIs", "Effect": "Allow", "Action": [ "logs:CallWithBearerToken", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "KMSAPIs", "Effect": "Allow", "Action": [ "kms:Describe*", "kms:GenerateDataKey*", "kms:Decrypt" ], "Condition": { "StringEquals": { "kms:ViaService": [ "logs.*.amazonaws.com" ] } }, "Resource": "arn:aws:kms:*:*:key/*" } ] } Pilih Berikutnya dan kemudian Buat pengguna.
catatan
Izin KMS diperlukan jika Anda berencana untuk mengirim log ke grup log terenkripsi KMS. Kondisi ini membatasi akses KMS ke hanya kunci yang digunakan melalui layanan CloudWatch Log.
Langkah 2: Hasilkan kredensil khusus layanan (kunci API)
Buat kunci API CloudWatch Log menggunakan CreateServiceSpecificCredentialAPI. Anda juga dapat menggunakan perintah create-service-specific-credential
Untuk membuat kunci API dengan masa kedaluwarsa 30 hari:
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30
Responsnya adalah ServiceSpecificCredentialobjek. ServiceCredentialSecretNilainya adalah kunci API CloudWatch Log Anda (token pembawa).
penting
Simpan ServiceCredentialSecret nilainya dengan aman, karena Anda tidak dapat mengambilnya nanti. Jika Anda kehilangannya, Anda harus membuat kunci API baru.
Langkah 3: Buat grup log dan aliran log
Buat grup log dan aliran log tempat log Anda akan disimpan:
# Create the log group aws logs create-log-group \ --log-group-name /aws/hlc-logs/my-application \ --region us-east-1 # Create the log stream aws logs create-log-stream \ --log-group-name /aws/hlc-logs/my-application \ --log-stream-name application-stream-001 \ --region us-east-1
Langkah 4: Aktifkan otentikasi token pembawa
Aktifkan otentikasi token pembawa pada grup log:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1
Verifikasi konfigurasi:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Mengirim log ke titik akhir HLC
Format titik akhir
URL titik akhir HLC mengikuti format ini:
https://logs.<region>.amazonaws.com/services/collector/event?logGroup=<name>&logStream=<name>[&entityName=<name>&entityEnvironment=<environment>]
Parameter yang diperlukan:
<region>— AWS Wilayah (misalnya,us-east-1,eu-west-1)logGroup— Nama grup log yang dikodekan URLlogStream— Nama aliran log yang dikodekan URL
Parameter opsional:
Anda dapat secara opsional mengaitkan peristiwa log Anda dengan Service entitas dengan menyertakan parameter kueri berikut. Karena log yang dikirim melalui titik akhir HLC adalah telemetri khusus, mereka tidak secara otomatis terkait dengan entitas. Dengan menyediakan parameter ini, CloudWatch Log membuat entitas dengan KeyAttributes.Type set ke Service dan mengaitkannya dengan peristiwa log Anda. Ini memungkinkan fitur terkait Jelajahi CloudWatch untuk menghubungkan log ini dengan telemetri lain (metrik, jejak, dan log) dari layanan yang sama, sehingga memudahkan pemecahan masalah dan memantau aplikasi Anda di berbagai jenis sinyal. Untuk informasi selengkapnya tentang entitas dan telemetri terkait, lihat Menambahkan informasi terkait ke telemetri kustom.
entityName— Nama entitas layanan untuk dikaitkan dengan peristiwa log. Nilai ini disimpan sebagai entitasKeyAttributes.Name(misalnya,my-applicationatauapi.myservice.com).entityEnvironment— Lingkungan tempat layanan di-host atau milik apa. Nilai ini disimpan sebagai entitasKeyAttributes.Environment(misalnya,,productionec2:default, ataueks:my-cluster/default).
Format permintaan
Kirim log menggunakan HTTP POST dengan header dan badan berikut:
Header:
Authorization: Bearer <your-bearer-token>Content-Type: application/json
Format tubuh:
Badan permintaan harus dalam format JSON dengan array peristiwa:
{ "event": [ { "time": 1730141374.001, "event": "Application started successfully", "host": "web-server-1", "source": "application.log", "severity": "info" }, { "time": 1730141374.457, "event": "User login successful", "host": "web-server-1", "source": "auth.log", "user": "john.doe" } ] }
Deskripsi bidang:
time— Stempel waktu epoch Unix dengan milidetik (wajib)event— Pesan log atau data peristiwa (wajib)host— Nama host sumber atau pengenal (opsional)source— Pengidentifikasi sumber log (opsional)
Bidang kustom tambahan dapat dimasukkan sesuai kebutuhan.
Contoh permintaan
curl -X POST \ 'https://logs.<region>.amazonaws.com/services/collector/event?logGroup=/aws/hlc-logs/my-application&logStream=application-stream-001' \ -H "Authorization: Bearer <your-bearer-token>" \ -H "Content-Type: application/json" \ -d '{ "event": [ { "time": 1730141374.001, "event": "Application started", "host": "web-server-1", "severity": "info" } ] }'
Izin kontrol untuk membuat dan menggunakan kunci API CloudWatch Log
Pembuatan dan penggunaan kunci API CloudWatch Log dikendalikan oleh tindakan dan kunci kondisi di layanan CloudWatch Log dan IAM.
Mengontrol pembuatan kunci API CloudWatch Log
CreateServiceSpecificCredentialTindakan iam: mengontrol pembuatan kunci khusus layanan (seperti kunci API CloudWatch Log). Anda dapat memberikan cakupan tindakan ini kepada pengguna IAM sebagai sumber daya untuk membatasi pengguna yang kuncinya dapat dibuat.
Anda dapat menggunakan tombol kondisi berikut untuk memaksakan kondisi pada izin untuk iam:CreateServiceSpecificCredential tindakan:
iam: ServiceSpecificCredentialAgeDays — Memungkinkan Anda menentukan, dalam kondisi, waktu kedaluwarsa kunci dalam beberapa hari. Misalnya, Anda dapat menggunakan kunci kondisi ini untuk hanya mengizinkan pembuatan kunci API yang kedaluwarsa dalam 90 hari.
iam: ServiceSpecificCredentialServiceName — Memungkinkan Anda menentukan, dalam kondisi, nama layanan. Misalnya, Anda dapat menggunakan kunci kondisi ini untuk hanya mengizinkan pembuatan kunci API untuk CloudWatch Log dan bukan layanan lainnya.
Mengontrol penggunaan kunci API CloudWatch Log
logs:CallWithBearerTokenTindakan ini mengontrol penggunaan kunci API CloudWatch Log. Untuk mencegah identitas menggunakan kunci API CloudWatch Logs, lampirkan kebijakan yang menolak logs:CallWithBearerToken tindakan tersebut ke pengguna IAM yang terkait dengan kunci tersebut.
Contoh kebijakan
Mencegah identitas membuat dan menggunakan kunci API CloudWatch Log
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWLAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "logs:CallWithBearerToken" ], "Resource": "*" } ] }
Awas
Kebijakan ini akan mencegah pembuatan kredensil untuk semua AWS layanan yang mendukung pembuatan kredensil khusus layanan. Untuk informasi selengkapnya, lihat Kredensi khusus layanan untuk pengguna IAM.
Mencegah identitas menggunakan kunci API CloudWatch Log
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } ] }
Izinkan pembuatan kunci CloudWatch Log hanya jika mereka kedaluwarsa dalam 90 hari
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceSpecificCredential", "Resource": "arn:aws:iam::123456789012:user/username", "Condition": { "StringEquals": { "iam:ServiceSpecificCredentialServiceName": "logs.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }
Menangani kunci API CloudWatch Log yang dikompromikan
Jika kunci API Anda dikompromikan, Anda harus mencabut izin untuk menggunakannya. Anda dapat menggunakan operasi IAM API berikut untuk mengelola kunci yang dikompromikan:
UpdateServiceSpecificCredential— Atur status kunci menjadi tidak aktif. Anda dapat mengaktifkan kembali kunci nanti.
ResetServiceSpecificCredential— Setel ulang kuncinya. Ini menghasilkan kata sandi baru untuk kunci tersebut.
DeleteServiceSpecificCredential— Hapus kunci secara permanen.
catatan
Untuk melakukan tindakan ini melalui API, Anda harus mengautentikasi dengan AWS kredensil dan bukan dengan kunci API CloudWatch Log.
Mengubah status kunci API CloudWatch Log
Untuk menonaktifkan kunci, gunakan update-service-specific-credential
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive
Untuk mengaktifkan kembali kunci, ubah status menjadiActive.
Mengatur ulang kunci API CloudWatch Log
Jika nilai kunci Anda telah dikompromikan atau Anda tidak lagi memilikinya, setel ulang menggunakan reset-service-specific-credential
aws iam reset-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Menghapus kunci API CloudWatch Log
Jika Anda tidak lagi membutuhkan kunci atau sudah kedaluwarsa, hapus menggunakan delete-service-specific-credential
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Lampirkan kebijakan IAM untuk menghapus izin penggunaan kunci API CloudWatch Log
Untuk mencegah identitas melakukan panggilan dengan kunci API CloudWatch Log, lampirkan kebijakan berikut ini ke pengguna IAM yang terkait dengan kunci:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } }
Pencatatan penggunaan kunci API dengan CloudTrail
Anda dapat menggunakan AWS CloudTrail untuk mencatat peristiwa data untuk penggunaan kunci API CloudWatch Log. CloudWatch Log memancarkan peristiwa AWS::Logs::LogGroupAuthorization data untuk CallWithBearerToken panggilan, memungkinkan Anda untuk mengaudit kapan dan bagaimana kunci API digunakan untuk mengirim log.
Untuk mengaktifkan CloudTrail logging untuk penggunaan kunci API CloudWatch Log:
catatan
Bucket S3 yang Anda tentukan untuk jejak harus memiliki kebijakan bucket yang memungkinkan CloudTrail untuk menulis file log ke dalamnya. Untuk informasi selengkapnya, lihat kebijakan bucket Amazon S3 untuk. CloudTrail
-
Buat jejak:
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1 -
Konfigurasikan pemilih acara lanjutan untuk menangkap peristiwa otorisasi grup CloudWatch log Log:
aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-logs-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Logs API key authorization events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Logs::LogGroupAuthorization"] } ] }]' -
Mulai pencatatan jejak:
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1
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