Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagian berikut berlaku untuk logging standar (v2) dan logging standar (legacy).
Topik
Waktu pengiriman file log
CloudFront mengirimkan log untuk distribusi hingga beberapa kali dalam satu jam. Secara umum, file log berisi informasi tentang permintaan yang CloudFront diterima selama periode waktu tertentu. CloudFront biasanya mengirimkan file log untuk periode waktu tersebut ke tujuan Anda dalam waktu satu jam dari peristiwa yang muncul di log. Namun, perhatikan bahwa beberapa atau semua entri file log untuk periode waktu terkadang dapat tertunda hingga 24 jam. Ketika entri log tertunda, CloudFront simpan dalam file log yang nama file termasuk tanggal dan waktu periode di mana permintaan terjadi, bukan tanggal dan waktu ketika file dikirim.
Saat membuat file log, CloudFront konsolidasikan informasi untuk distribusi Anda dari semua lokasi tepi yang menerima permintaan untuk objek Anda selama periode waktu yang dicakup oleh file log.
CloudFront dapat menyimpan lebih dari satu file untuk jangka waktu tergantung pada berapa banyak permintaan yang CloudFront diterima untuk objek yang terkait dengan distribusi.
CloudFront mulai mengirimkan log akses dengan andal sekitar empat jam setelah Anda mengaktifkan pencatatan. Anda mungkin mendapatkan beberapa log akses sebelum waktu tersebut.
catatan
Jika tidak ada pengguna yang meminta objek Anda selama periode waktu tersebut, Anda tidak akan menerima file log untuk periode tersebut.
Bagaimana permintaan dicatat saat URL atau header permintaan melebihi ukuran maksimum
Jika ukuran total semua header permintaan, termasuk cookie, melebihi 20 KB, atau jika URL melampaui 8192 byte, CloudFront tidak dapat menguraikan permintaan sepenuhnya dan tidak dapat mencatatnya. Karena permintaan tersebut tidak dicatat, Anda tidak akan melihat kode status kesalahan HTTP kembali.
Jika badan permintaan melebihi ukuran maksimum, permintaan akan dicatat, termasuk kode status kesalahan HTTP.
Bidang file log
File log untuk distribusi berisi 33 bidang. Daftar berikut berisi setiap nama kolom, secara berurutan, bersama dengan deskripsi informasi di bidang tersebut.
-
date
Tanggal di mana peristiwa terjadi dalam format
YYYY-MM-DD
. Misalnya,2019-06-30
. Tanggal dan waktu berada dalam Waktu Universal Terkoordinasi (UTC). Untuk WebSocket koneksi, ini adalah tanggal ketika koneksi ditutup. -
time
Waktu ketika CloudFront server selesai menanggapi permintaan (dalam UTC), misalnya,.
01:42:39
Untuk WebSocket koneksi, ini adalah waktu ketika koneksi ditutup. -
x-edge-location
Lokasi tepi yang melayani permintaan. Setiap lokasi tepi diidentifikasi oleh kode tiga huruf dan nomor yang ditetapkan secara sewenang-wenang (misalnya, DFW3). Kode tiga huruf biasanya sesuai dengan kode bandara International Air Transport Association (IATA) untuk bandara di dekat lokasi geografis lokasi tepi. (Ringkasan ini mungkin berubah di masa mendatang.)
-
sc-bytes
Jumlah total byte yang dikirim server ke penampil sebagai respons terhadap permintaan, termasuk header. Untuk WebSocket dan koneksi gRPC, ini adalah jumlah total byte yang dikirim dari server ke klien melalui koneksi.
-
c-ip
Alamat IP penampil yang membuat permintaan, misalnya,
192.0.2.183
atau2001:0db8:85a3::8a2e:0370:7334
. Jika penampil menggunakan proksi HTTP atau penyeimbang beban untuk mengirim permintaan, nilai bidang ini adalah alamat IP dari perantara atau penyeimbang beban. Lihat jugax-forwarded-for
bidang. -
cs-method
Metode permintaan HTTP yang diterima dari penampil.
-
cs(Host)
Nama domain CloudFront distribusi (misalnya, d111111abcdef8.cloudfront.net).
-
cs-uri-stem
Bagian URL permintaan yang mengidentifikasi jalur dan objek (misalnya,
/images/cat.jpg
). Tanda tanya (?) dalam URLs dan string kueri tidak termasuk dalam log. -
sc-status
Berisi salah satu nilai berikut:
-
Kode status HTTP dari respon server (misalnya,
200
). -
000
, yang menunjukkan bahwa penampil menutup koneksi sebelum server dapat merespons permintaan. Jika penampil menutup koneksi setelah server mulai mengirim respons, bidang ini berisi kode status HTTP dari respons yang mulai dikirim server.
-
-
cs(Referer)
Nilai dari
Referer
header dalam permintaan. Ini adalah nama domain yang membuat permintaan. Perujuk umum termasuk mesin pencari, situs web lain yang terhubung langsung ke objek Anda, dan situs web Anda sendiri. -
cs(User-Agent)
Nilai dari
User-Agent
header dalam permintaan.User-Agent
header mengidentifikasi sumber permintaan, seperti jenis perangkat dan peramban yang mengirimkan permintaan atau, jika permintaan berasal dari mesin pencari, mesin pencari mana. -
cs-uri-query
Bagian utas kueri URL permintaan, jika ada.
Ketika URL tidak berisi string kueri, nilai bidang ini adalah tanda hubung (-). Untuk informasi selengkapnya, lihat Konten cache berdasarkan parameter string kueri.
-
cs(Cookie)
Cookie
header dalam permintaan, termasuk nama—pasangan nilai dan atribut terkait.Jika Anda mengaktifkan pencatatan cookie, CloudFront catat cookie di semua permintaan terlepas dari cookie mana yang Anda pilih untuk diteruskan ke asal. Ketika permintaan tidak menyertakan header cookie, nilai bidang ini adalah tanda hubung (-). Untuk informasi selengkapnya tentang cookie, lihat Konten cache berdasarkan cookie.
-
x-edge-result-type
Bagaimana server menggolongkan respons setelah byte terakhir meninggalkan server. Dalam beberapa kasus, jenis hasil dapat berubah antara waktu saat server siap mengirimkan respons dan waktu saat server selesai mengirimkan respons. Lihat juga
x-edge-response-result-type
bidang.Misalnya, dalam streaming HTTP, seandainya server menemukan segmen aliran di cache. Dalam skenario itu, nilai kolom ini biasanya adalah
Hit
. Namun, jika penampil menutup koneksi sebelum server mengirimkan seluruh segmen, jenis hasil akhir (dan nilai kolom ini) adalahError
.WebSocket dan koneksi gRPC akan memiliki nilai
Miss
untuk bidang ini karena kontennya tidak dapat di-cache dan diproksi langsung ke asal.Nilai yang mungkin termasuk:
-
Hit
– Server melayani objek ke penampil dari cache. -
RefreshHit
– Server menemukan objek dalam cache tetapi objek telah kedaluwarsa, sehingga server menghubungi asal untuk memverifikasi bahwa cache memiliki versi terbaru dari objek tersebut. -
Miss
– Permintaan tidak dapat dipenuhi oleh objek di dalam cache, sehingga server meneruskan permintaan ke asal dan mengembalikan hasil ke penampil. -
LimitExceeded
— Permintaan ditolak karena CloudFront kuota (sebelumnya disebut sebagai batas) terlampaui. -
CapacityExceeded
Server mengembalikan kode status HTTP 503 karena tidak memiliki kapasitas yang cukup pada saat permintaan untuk melayani objek. -
Error
– Biasanya, ini berarti permintaan tersebut mengakibatkan kesalahan klien (nilaisc-status
bidang ada di4xx
atau kesalahan server (nilaisc-status
bidang ada di5xx
beragam). Jika nilaisc-status
adalah200
, atau jika nilai bidang ini adalahError
dan nilai darix-edge-response-result-type
bidang tidakError
, artinya permintaan HTTP berhasil tetapi klien terputus sebelum menerima semua byte. -
Redirect
– Server mengarahkan penampil dari HTTP ke HTTPS sesuai dengan pengaturan distribusi.
-
-
x-edge-request-id
String buram yang secara unik mengidentifikasi permintaan. CloudFront juga mengirimkan string ini di header
x-amz-cf-id
respons. -
x-host-header
Nilai yang disertakan oleh penampil dalam
Host
header permintaan. Jika Anda menggunakan nama CloudFront domain di objek Anda URLs (seperti d111111abcdef8.cloudfront.net), bidang ini berisi nama domain tersebut. Jika Anda menggunakan nama domain alternatif (CNAMEs) di objek Anda URLs (seperti www.example.com), bidang ini berisi nama domain alternatif.Jika Anda menggunakan nama domain alternatif, lihat
cs(Host)
di bidang 7 untuk nama domain yang terkait dengan distribusi Anda. -
cs-protocol
Protokol permintaan pemirsa (
http
,https
,grpcs
,ws
, atauwss
). -
cs-bytes
Jumlah total byte data yang disertakan oleh penampil, termasuk header. Untuk WebSocket dan koneksi gRPC, ini adalah jumlah total byte yang dikirim dari klien ke server pada koneksi.
-
time-taken
Jumlah detik (hingga seperseribu detik, misalnya, 0,082) dari saat server menerima permintaan penampil hingga saat server menulis byte terakhir dari respons ke antrian output, yang diukur pada server. Dari perspektif penampil, total waktu untuk mendapatkan respons penuh akan lebih lama dari nilai ini karena latensi jaringan dan buffering TCP.
-
x-forwarded-for
Jika penampil menggunakan proksi HTTP atau timbangantor beban untuk mengirim permintaan, nilai
c-ip
adalah alamat IP dari perantara atau pemukul beban. Dalam hal ini, bidang ini adalah alamat IP penampil yang memulai permintaan. Bidang ini dapat berisi beberapa alamat IP yang dipisahkan koma. Setiap alamat IP dapat berupa IPv4 alamat (misalnya,192.0.2.183
) atau IPv6 alamat (misalnya,2001:0db8:85a3::8a2e:0370:7334
).Jika penampil tidak menggunakan proksi HTTP atau penyeimbang beban, nilai bidang ini adalah tanda hubung (-).
-
ssl-protocol
Ketika permintaan menggunakan HTTPS, bidang ini berisi SSL/TLS protocol that the viewer and server negotiated for transmitting the request and response. For a list of possible values, see the supported SSL/TLS protokol di. Protokol dan cipher yang didukung antara pemirsa dan CloudFront
Saat
cs-protocol
di kolom 17 adalahhttp
, nilai untuk kolom ini adalah tanda hubung (-). -
ssl-cipher
Ketika permintaan menggunakan HTTPS, bidang ini berisi SSL/TLS cipher that the viewer and server negotiated for encrypting the request and response. For a list of possible values, see the supported SSL/TLS cipher di. Protokol dan cipher yang didukung antara pemirsa dan CloudFront
Saat
cs-protocol
di kolom 17 adalahhttp
, nilai untuk kolom ini adalah tanda hubung (-). -
x-edge-response-result-type
Bagaimana server mengklasifikasikan respons tepat sebelum mengembalikan respons ke penampil. Lihat juga
x-edge-result-type
bidang. Nilai yang mungkin termasuk:-
Hit
– Server melayani objek ke penampil dari cache. -
RefreshHit
– Server menemukan objek dalam cache tetapi objek telah kedaluwarsa, sehingga server menghubungi asal untuk memverifikasi bahwa cache memiliki versi terbaru dari objek tersebut. -
Miss
– Permintaan tidak dapat dipenuhi oleh objek dalam cache, sehingga server meneruskan permintaan ke server asal dan mengembalikan hasil ke penampil. -
LimitExceeded
— Permintaan ditolak karena CloudFront kuota (sebelumnya disebut sebagai batas) terlampaui. -
CapacityExceeded
— Server mengembalikan kesalahan 503 karena tidak memiliki kapasitas yang cukup pada saat permintaan untuk melayani objek. -
Error
– Biasanya, ini berarti permintaan tersebut mengakibatkan kesalahan klien (nilaisc-status
bidang ada di4xx
atau kesalahan server (nilaisc-status
bidang ada di5xx
beragam).Jika nilai
x-edge-result-type
adalahError
dan nilai bidang ini tidakError
, klien terputus sebelum menyelesaikan unduhan. -
Redirect
– Server mengarahkan penampil dari HTTP ke HTTPS sesuai dengan pengaturan distribusi.
-
-
cs-protocol-version
Versi HTTP yang ditentukan penampil dalam permintaan. Nilai yang mungkin termasuk adalah
HTTP/0.9
,HTTP/1.0
,HTTP/1.1
,HTTP/2.0
, danHTTP/3.0
. -
fle-status
Saat enkripsi tingkat lapangan dikonfigurasi untuk distribusi, bidang ini berisi kode yang menunjukkan apakah badan permintaan berhasil diproses. Ketika server berhasil memproses isi permintaan, mengenkripsi nilai dalam bidang yang ditentukan, dan meneruskan permintaan ke asal, nilai bidang ini adalah
Processed
. Nilai darix-edge-result-type
masih dapat menunjukkan kesalahan sisi klien atau sisi server dalam kasus ini.Nilai yang mungkin untuk kolom ini meliputi:
-
ForwardedByContentType
– Server meneruskan permintaan ke tempat asal tanpa mengurai atau enkripsi karena tidak ada jenis konten yang dikonfigurasi. -
ForwardedByQueryArgs
— Server meneruskan permintaan ke asal tanpa parsing atau enkripsi karena permintaan berisi argumen kueri yang tidak ada dalam konfigurasi untuk enkripsi tingkat lapangan. -
ForwardedDueToNoProfile
– Server meneruskan permintaan ke tempat asal tanpa mengurai atau enkripsi karena tidak ada profil yang ditentukan dalam konfigurasi untuk enkripsi tingkat lapangan. -
MalformedContentTypeClientError
– Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena nilaiContent-Type
header dalam format yang tidak valid. -
MalformedInputClientError
– Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena bodi permintaan dalam format yang tidak valid. -
MalformedQueryArgsClientError
– Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena argumen kueri kosong atau dalam format yang tidak valid. -
RejectedByContentType
– Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena tidak ada jenis konten yang ditentukan dalam konfigurasi untuk enkripsi tingkat lapangan. -
RejectedByQueryArgs
– Server menolak permintaan dan mengembalikan kode status HTTP 400 ke penampil karena tidak ada alasan kueri yang ditentukan dalam konfigurasi untuk enkripsi tingkat lapangan. -
ServerError
– Server asal mengembalikan kesalahan.
Jika permintaan melebihi kuota enkripsi tingkat lapangan (sebelumnya disebut sebagai batas), bidang ini berisi salah satu kode kesalahan berikut, dan server mengembalikan kode status HTTP 400 ke penampil. Untuk daftar kuota saat ini pada enkripsi tingkat lapangan, lihat Kuotas pada enkripsi tingkat lapangan.
-
FieldLengthLimitClientError
– Kolom yang dikonfigurasi untuk dienkripsi melebihi panjang maksimum yang diizinkan. -
FieldNumberLimitClientError
– Permintaan agar distribusi dikonfigurasi untuk mengenkripsi berisi lebih dari jumlah kolom yang diperbolehkan. -
RequestLengthLimitClientError
– Panjang badan permintaan melebihi panjang maksimum yang diperbolehkan ketika enkripsi tingkat lapangan dikonfigurasi.
Jika enkripsi tingkat bidang tidak dikonfigurasi untuk distribusi, nilai bidang ini adalah tanda hubung (-).
-
-
fle-encrypted-fields
Jumlah bidang enkripsi tingkat lapangan yang dienkripsi dan diteruskan oleh server ke asal. CloudFront server mengalirkan permintaan yang diproses ke asal saat mereka mengenkripsi data, sehingga bidang ini dapat memiliki nilai meskipun nilainya
fle-status
adalah kesalahan.Jika enkripsi tingkat bidang tidak dikonfigurasi untuk distribusi, nilai bidang ini adalah tanda hubung (-).
-
c-port
Nomor port permintaan dari penampil.
-
time-to-first-byte
Jumlah detik antara menerima permintaan dan menulis byte pertama respons, sebagaimana diukur pada server.
-
x-edge-detailed-result-type
Bidang ini berisi nilai yang sama dengan
x-edge-result-type
bidang, kecuali dalam kasus berikut:-
Ketika objek disajikan ke penampil dari lapisan Origin Shield, bidang ini berisi
OriginShieldHit
. -
Ketika objek tidak dalam CloudFront cache dan respons dihasilkan oleh permintaan asal fungsi Lambda @Edge, bidang ini berisi.
MissGeneratedResponse
-
Ketika nilai bidang adalah
Error
,x-edge-result-type
bidang ini berisi salah satu nilai berikut dengan informasi lebih lanjut tentang kesalahan:-
AbortedOrigin
– Server mengalami masalah dengan asal usul. -
ClientCommError
– Respons ke penampil terganggu karena masalah komunikasi antara server dan penampil. -
ClientGeoBlocked
— Distribusi dikonfigurasi untuk menolak permintaan dari lokasi geografis pemirsa. -
ClientHungUpRequest
– Penampil berhenti sebelum waktunya saat mengirim permintaan. -
Error
— Terjadi kesalahan yang jenis kesalahannya tidak sesuai dengan kategori lainnya. Jenis kesalahan ini dapat terjadi saat server menjalankan respons kesalahan dari cache. -
InvalidRequest
– Server menerima permintaan yang tidak valid dari penampil. -
InvalidRequestBlocked
– Akses ke sumber daya yang diminta diblokir. -
InvalidRequestCertificate
— Distribusi tidak cocok dengan sertifikat SSL/TLS tempat koneksi HTTPS dibuat. -
InvalidRequestHeader
Permintaan mengandung header yang tidak valid. -
InvalidRequestMethod
– Distribusi tidak dikonfigurasi untuk menangani metode permintaan HTTP yang digunakan. Ini dapat terjadi ketika distribusi hanya mendukung permintaan yang dapat disimpan. -
OriginCommError
— Permintaan habis waktu saat menghubungkan ke asal, atau membaca data dari asal. -
OriginConnectError
— Server tidak dapat terhubung ke asal. -
OriginContentRangeLengthError
—Content-Length
Header dalam respons asal tidak cocok dengan panjang diContent-Range
header. -
OriginDnsError
— Server tidak dapat menyelesaikan nama domain asal. -
OriginError
- Asal memberikan jawaban yang salah. -
OriginHeaderTooBigError
– Header yang dikembalikan oleh asalnya terlalu besar untuk diproses oleh server edge. -
OriginInvalidResponseError
– Asal memberikan respons tidak valid. -
OriginReadError
— Server tidak bisa membaca dari asalnya. -
OriginWriteError
— Server tidak bisa menulis ke asal. -
OriginZeroSizeObjectError
– Objek seukuran nol yang dikirim dari sumber mengakibatkan kesalahan. -
SlowReaderOriginError
– Penampil lambat untuk membaca pesan yang menyebabkan kesalahan asal.
-
-
-
sc-content-type
Nilai HTTP
Content-Type
header respons. -
sc-content-len
Nilai HTTP
Content-Length
header respons. -
sc-range-start
Saat tanggapan berisi HTTP
Content-Range
header, kolom ini berisi nilai mulai rentang. -
sc-range-end
Saat tanggapan berisi HTTP
Content-Range
header, kolom ini berisi nilai akhir rentang.
Berikut ini adalah contoh file log untuk distribusi.
#Version: 1.0 #Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end 2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - - 2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow== d111111abcdef8.cloudfront.net https 23 0.000 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.000 Hit text/html 78 - - 2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - - 2019-12-13 22:36:27 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net /favicon.ico 502 http://www.example.com/ Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error 1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ== www.example.com http 675 0.102 - - - Error HTTP/1.1 - - 25260 0.102 OriginDnsError text/html 507 - - 2019-12-13 22:36:26 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error 3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg== www.example.com http 735 0.107 - - - Error HTTP/1.1 - - 3802 0.107 OriginDnsError text/html 507 - - 2019-12-13 22:37:02 SEA19-C2 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502 - curl/7.55.1 - - Error kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw== www.example.com http 387 0.103 - - - Error HTTP/1.1 - - 12644 0.103 OriginDnsError text/html 507 - -
Menganalisis log
Karena Anda dapat menerima beberapa log akses per jam, kami sarankan Anda menggabungkan semua file log yang Anda terima untuk periode waktu tertentu ke dalam satu file. Anda kemudian dapat menganalisis data untuk periode tersebut dengan lebih akurat dan lengkap.
Salah satu cara untuk menganalisis log akses Anda adalah dengan menggunakan Amazon Athena
Selain itu, posting AWS blog berikut membahas beberapa cara untuk menganalisis log akses.
-
Amazon CloudFront Request Logging
(untuk konten yang dikirimkan melalui HTTP) -
CloudFront Log yang Ditingkatkan, Sekarang Dengan String Kueri